当前位置: 首页 > news >正文

线程的取消和互斥

线程的取消

int pthread_cancel(pthread_t thread);

        注意:线程的取消要有取消点才可以,不是说取消就取消,线程的取消点主要是阻塞的系统调用(前面sleep就是一个阻塞的系统调用)

        如果没有取消点,手动设置一个

        把上图中sleep函数替换成这个一样可以取消

void pthread_testcancel(void); //设置取消点的函数

        设置取消使能或禁止        

int pthread_setcancelstate(int state,int *oldstate);
//第一个参数可以设置为PTHREAD_CANCEL_ENABLE     可以被取消PTHREAD_CANCEL_DISABLE    不能被取消,就算有取消点也不能

        设置取消类型

int pthread_setcanceltype(int type,int *oldtype);//PTHREAD_CANCEL_DEFERRED        等到取消点才取消
//PTHREAD_CANCEL_ASYNCHRONOUS    目标线程会立即取消

线程的清理

void pthread_cleanup_push(voiud (*routine)(void *),void *arg);
void pthread_cleanup_pop(int execute);
//两个必须成对使用    不然会有编译错误

        routine函数被执行的条件:

                1.被pthread_cancel取消掉

                2.执行pthread_exit

                3.非0参数执行pthread_cleanup_pop()

        注意:

                1.必须成对使用,即使 pthread_cleanup_pop() 不会被执行也必须写上,否则编译错误

                2.pthread_cleanup_pop() 被执行参数为0,pthread_cleanup_push() 回调参数routine 不

        会被执行

                3.pthread_cleanup_push() 和pthread_cleanup_pop() 可以多对使用,顺序正好相反(如

        下下图)

                4.线程内的 return 可以结束线程,但不能触发pthread_cleanup_push() 里面的回调函数

        尽量要用 p

http://www.lryc.cn/news/294754.html

相关文章:

  • 机器学习之DeepSequence软件使用学习1
  • 【Kotlin】Kotlin环境搭建
  • langgraph学习--创建基本的agent执行器
  • Mybatis中的sql-xml延迟加载机制
  • 【Linux系统学习】1.初识Linux
  • 政安晨:政安晨:机器学习快速入门(三){pandas与scikit-learn} {模型验证及欠拟合与过拟合}
  • 分享65个节日PPT,总有一款适合您
  • 架构学习(二):原生scrapy如何接入scrapy-redis,初步入局分布式
  • 第1节、电路连接【51单片机+L298N步进电机系列】
  • API接口文档怎么写?
  • Qt 范例阅读: QStateMachine状态机框架 和 SCXML 引擎简单记录(方便后续有需求能想到这两个东西)
  • Linux实验记录:使用DHCP动态管理主机地址
  • Qt应用软件【协议篇】MQTT协议介绍
  • Linux ncftp命令教程:如何使用ncftp来管理FTP服务器(附实例详解和注意事项)
  • 2、ChatGPT 在数据科学中的应用
  • 从小白到入门webrtc音视频通话
  • Qt之漂亮的地球
  • FPGA解码MIPI视频:Xilinx Artix7-35T低端FPGA,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持
  • 使用docker部署Kafka(MAC Apple M2 Pro)
  • 车位检测,YOLOV8,OPENCV调用
  • FCIS 2023:洞悉网络安全新态势,引领创新防护未来
  • 前端工程化之:webpack2-1(常用扩展)
  • Python学习路线 - Python高阶技巧 - PySpark案例实战
  • 【TCP】高频面试题
  • Python||五城P.M.2.5数据分析与可视化_使用华夫图分析各个城市的情况(中)
  • 使用PDFBox实现pdf转其他图片格式
  • 【技术预研】StarRocks官方文档浅析(4)
  • 时序数据库 Tdengine 执行命令能够查看执行的sql语句
  • LeetCode、746. 使用最小花费爬楼梯【简单,动态规划 线性DP】
  • [香橙派开发系列]使用蓝牙和手机进行信息的交换