c 线程
pthread_cancel 取消次线程
pthread_exit 主动退出次线程
pthread_self 获取自己的线程id
pthread_jion 阻塞等待指定线程id的次线程结束,同时回收次线程资源
pthread_detach 分离次线程,让次线程在结束时自动回收资源
注册进程退出处理函数
atexit()
进程退出处理函数
使用方法
atexit(进程处理函数指针)
注册线程退出处理函数
pthread_cleanup_push
注册线程退出处理函数
pthread_cleanup_pop
将压入栈中的退出处理函数弹出,然后执行
两个必须成对使用
弹栈线程退出出口i函数的几种条件
主动调用 pthread_cleanup_pop(!0)
调用pthread_cancel
调用 pthread_exit 函数退出
return 退出不会弹栈
线程属性设置
线程可以设置的属性有
设置绑定属性
设置可分离属性
设置线程堆栈属性
设置调度优先级属性
.....
线程互斥
互斥锁
互斥锁试用步骤
定义互斥锁
初始化互斥锁
加锁解锁(pthread_mutex_lock/pthread_mutex_unlock)
进程退出时销毁互斥锁(pthread_mutex_destroy)
线程信号量
功能
实现互斥
sem_init 信号量初始化
sem_wait 对某个信号量进行阻塞p操作
sem_pos 对某个信号量进行v操作
sem_destroy 删除某个信号量
实现同步
信号量实现同步
条件变量
pthread_cond_init
初始化条件变量
pthread_cond_t cond;
pthread_cond_init(&cond, NULL);
或者
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
等待条件的函数
pthread_cond_wait
检测条件变量,如果cond没有被设置,pthread_cond_wait 会休眠(阻塞),直到条件准备号才被唤醒
参数
- cond :条件变量
- mutex:和条件变量配合使用的互斥锁
设置条件变量的函数
pthread_cond_signal
设置cond,唤醒 pthread_cond_wait 函数