pthread_cleanup_push 与 pthread_cleanup_pop 精简介绍
主要功能是防止线程同步的时候子线程被锁死
因为主线程可能在子线程运行时取消,而子进程内锁关闭了有没有打开,可以向栈中压如一个函数用来解锁,若果子线程没有被意外取消,可以用弹出栈内的函数。
pthread_cleanup_push与pthread_cleanup_pop是一一对应的
if(cnt == 0) //cnt相当于一个信号量,相当于一个锁一个标志位
{
cnt++;
pthread_cleanup_push(functiom , arg);
//子线程操作
//子线程在这里有可能被主线程程cancel
pthread_cleanup_pop(0);
//形参为0则不会执行function,1则执行
cnt–;
}
【pthread_cleanup_push 与 pthread_cleanup_pop 精简介绍】void function(*arg)
{
cnt–;
}
推荐阅读
- Git上传项目提示Push|Git上传项目提示Push rejected: Push to origin/master was rejected解决办法
- TortoiseSVN 执行清理( cleanUp )失败的解决方案
- 恒源云gpushare.com_Byte-Pair Encoding算法超详细讲解
- gpushare.com_基于去噪Transformer的无监督句子编码【EMNLP 2021】
- 爪哇学习笔记——从pushState方法看前端路由
- JavaScript|JavaScript push()和splice()方法
- jenkins|Gitlab通过Webhook实现Push代码后Jenkins自动构建
- 极客星球 | MobPush之FCM离线消息解密
- 浅谈pthread_setschedparam()和sched_setscheduler()的使用
- [Qt学习笔记]QPushButton点击事件和长按事件使用功能