news 2026/4/16 15:47:21

网络编程封装mutex、cond、semaphore学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络编程封装mutex、cond、semaphore学习笔记

1.代码

#ifndef LOCKER_H #define LOCKER_H #include<exception> #include<pthread.h> #include<semaphore.h> class locker{ public: locker(){ if(pthread_mutex_init(&mutex,NULL)!=0){ throw std::exception(); } } ~locker(){ pthread_mutex_destroy(&mutex); } bool lock(){ return pthread_mutex_lock(&mutex)==0; } bool unlock(){ return pthread_mutex_unlock(&mutex)==0; } pthread_mutex_t *get(){ return &mutex; } private: pthread_mutex_t mutex; }; class cond{ public: cond(){ if(pthread_cond_init(&m_cond,NULL)!=0){ throw std::exception(); } } ~cond(){ pthread_cond_destroy(&m_cond); } bool wait(pthread_mutex_t *mutex){ // int ret=0; //ret=pthread_cond_wait(&m_cond,mutex); //return ret==0; return pthread_cond_wait(&m_cond,mutex)==0; } bool timewait(pthread_mutex_t *mutex,timespec t){ //int ret=0; //ret=pthread_cond_timedwait(&m_cond,mutex,&t); //return ret==0; return pthread_cond_timedwait(&m_cond,mutex,&t)==0; } bool signal(){ return pthread_cond_signal(&m_cond)==0; } bool broadcast(){ return pthread_cond_broadcast(&m_cond)==0; } private: pthread_cond_t m_cond; }; class sem{ public: sem(){ if(sem_init(&m_sem,0,0)!=0){ throw std::exception(); } } sem(int num){ if(sem_init(&m_sem,0,num)!=0){ throw std::exception(); } } ~sem(){ sem_destroy(&m_sem); } bool wait(){ return sem_wait(&m_sem)==0; } bool post(){ return sem_post(&m_sem)==0; } private: sem_t m_sem; }; #endif

2.知识点

1.使用构造和析构来封装对锁的初始化和销毁的处理。

2.对于cond

pthread_cond_wait和pthread_cond_signal

参数是要绑定的锁的指针。

3.对于sem

有sem_wait和sem_post

4.对于成功的判别主要是通过==0

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:32:26

一文说清Multisim下载安装中的系统兼容性问题

Multisim安装翻车&#xff1f;一文搞懂系统兼容性避坑指南 你是不是也遇到过这种情况&#xff1a;兴冲冲地完成 multisim下载安装 &#xff0c;结果双击图标没反应、启动闪退、激活失败……折腾半天才发现是系统“不认账”&#xff1f;别急&#xff0c;这并不是你的操作有问…

作者头像 李华
网站建设 2026/4/16 13:35:07

异或门基础原理详解:数字逻辑入门必看

异或门&#xff1a;不只是“不同为1”的简单逻辑你有没有想过&#xff0c;为什么在计算机里交换两个变量的值&#xff0c;有时候可以不用临时变量&#xff1f;或者&#xff0c;在通信中检测数据是否出错&#xff0c;为何只需对所有位做一次“异或”就能知道奇偶性&#xff1f;这…

作者头像 李华
网站建设 2026/4/16 9:20:59

上位机是什么意思:USB通信协议的数据传输原理

上位机是什么&#xff1f;揭秘USB通信中的主控逻辑与数据交互真相 你有没有在调试单片机时&#xff0c;听到同事说&#xff1a;“把数据发给上位机看看”&#xff1f; 或者在项目文档里反复看到“上位机软件”、“下位机固件”这类术语&#xff0c;却始终没搞清—— 到底什么…

作者头像 李华
网站建设 2026/4/16 9:26:05

电机控制器中FOC的Clark与Park变换详解:深度剖析

电机控制器中FOC的Clark与Park变换详解&#xff1a;从原理到实战一场关于“坐标系”的革命&#xff1a;为什么我们需要Clark和Park&#xff1f;在现代高性能电机控制领域&#xff0c;尤其是永磁同步电机&#xff08;PMSM&#xff09;和无刷直流电机&#xff08;BLDC&#xff09…

作者头像 李华