Linux:C++ 封装pthread
项目要用到多线程,主要包括:
通信一个线程,媒体处理一个线程,还有个主线程
主要使用方法是通信线程能够打开或者停止媒体处理线程,同时要保证资源释放的安全
由于平台是Linux,打算使用pthread,顺道学习一哈
目标
将pthread封装进类中;方便的线程停止;停止线程时的资源释放
背景知识
pthread中文教程:https://hanbingyan.github.io/2016/03/07/pthread_on_linux/
主要的几个函数:
//线程创建
int pthread_create (pthread_t *thread,pthread_attr_t *attr,void *(*start_routine)(void *),void *arg)
//取消线程,仅向工作线程发出信号
int pthread_cancel (pthread_t thread)
//等待停止,用在其他线程
int pthread_join(pthread_t threadid, void **value_ptr)
取消点:
“线程取消的方法是向目标线程发Cancel信号,但如何处理Cancel信号则由目标线程自己决定,或者忽略、或者立即终止、或者继续运行至Cancelation-point(取消点),由不同的Cancelation状态决定。
线程接收到CANCEL信号的缺省处理(即pthread_create()创建线程的缺省状态)是继续运行至取消点,也就是说设置一个CANCELED状态,线程继续运