![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++ posix库封装
littleflypig
这个作者很懒,什么都没留下…
展开
-
c++ posix线程库mutex的封装和使用
锁的封装一般考虑两个问题: 初始化和销毁 加锁和解锁 因为锁不允许拷贝和赋值语义,因此继承前面的noncopyable类。 参考 https://blog.csdn.net/littleflypig/article/details/88799617 封装 首先对mutex资源进行封装,这个类代表锁这个资源: 定义一个宏来对pthread函数返回值进行检查,因此pthread函数一般返回0代表...原创 2019-04-10 19:14:22 · 410 阅读 · 0 评论 -
c++ posix线程库condition的封装和使用
封装 condition的封装比较简单,因为Condition类内用到了MutexLock的私有成员,所以要在MutexLock类中声明为友元。 头文件 #ifndef _CONDITION_H_ #define _CONDITION_H_ #include "noncopyable.h" #include <pthread.h> class MutexLock; //前向声明...原创 2019-04-11 16:14:03 · 435 阅读 · 0 评论 -
c++ posix线程库thread的封装和使用
POSIX的thread默认是joinable,需要手工调用pthread_join函数来回收,也可以调用pthread_detach将其变为detachable,此时不需要手工回收线程。 封装时有三个注意事项: Thread应该是不可拷贝的,所以继承noncopyable 其次,为了调用pthread_create创建线程,我们往里面注册的不能是一个成员函数,因为成员函数含有一个隐式参数(th...原创 2019-04-11 17:22:16 · 852 阅读 · 0 评论 -
c++ posix线程库CountDown封装和使用
CountDownLatch CountDownLatch(倒计时器)是一种高层的线程间同步组件,主要有两个用途: 主线程发起多个子线程,等待这些子线程都完成一定的任务后,主线程才继续执行。通常用于主线程等待多个子线程完成初始化。 主线程发起多个子线程,子线程都等待主线程,主线程完成一些任务后通知子线程开始执行。通常用于多个子线程等待主线程发出起跑命令。 当然可以直接用条件变量完成上述功能,不过...原创 2019-04-18 17:07:41 · 395 阅读 · 0 评论