![](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 · 415 阅读 · 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 · 442 阅读 · 0 评论 -
c++ posix线程库thread的封装和使用
POSIX的thread默认是joinable,需要手工调用pthread_join函数来回收,也可以调用pthread_detach将其变为detachable,此时不需要手工回收线程。封装时有三个注意事项:Thread应该是不可拷贝的,所以继承noncopyable其次,为了调用pthread_create创建线程,我们往里面注册的不能是一个成员函数,因为成员函数含有一个隐式参数(th...原创 2019-04-11 17:22:16 · 860 阅读 · 0 评论 -
c++ posix线程库CountDown封装和使用
CountDownLatchCountDownLatch(倒计时器)是一种高层的线程间同步组件,主要有两个用途:主线程发起多个子线程,等待这些子线程都完成一定的任务后,主线程才继续执行。通常用于主线程等待多个子线程完成初始化。主线程发起多个子线程,子线程都等待主线程,主线程完成一些任务后通知子线程开始执行。通常用于多个子线程等待主线程发出起跑命令。当然可以直接用条件变量完成上述功能,不过...原创 2019-04-18 17:07:41 · 396 阅读 · 0 评论