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

线程回收与线程间通信

.线程回收:pthread_join();

int pthread_join(pthread_t thread, void **retval);

功能:阻塞等待回收线程资源空间

参数:

thread:要回收的线程ID

retval:用来保存线程退出时传递的参数

NULL:不接收传递的参数

返回值:

成功:0

失败:-1

线程回收策略:

1.分离属性的线程:不需要回收(没有空闲的线程可帮忙回收)

2.非分离属性的线程:pthread_join()阻塞回收                                                    

线程属性

1.分离属性:  不需要被其他线程回收的线程称为分离属性得到线

     程,将来会被操作系统所回收。

int pthread_detach(pthread_t thread);

功能:将线程设置成分离属性的线程

2.非分离属性:可以被其他线程回收或者结束的线程,称为非分离

       属性的线程。(默认属性:非分离属性)

线程间通信:全局变量,全局队列,共享内存区域。

全局变量通信:

临界资源:多个线程可以同时访问的资源称为临界资源:比

如,全局变量共享内存区域等。

多个线程在访问临界资源时,存在资源竞争。

如何解决资源竞争问题:

  • 互斥机制:多个线程访问临界资源时,具有排他问的机制  

(一次只允许一个线程对该临界资源进行访问)。

互斥锁--》解决资源竞争问题。

实现步骤:

1.创建互斥锁      pthread_mutex_t

2.初始化互斥锁   pthread_mutex_init

3.加锁      int pthread_mitex_lock(pthreadmutex_t*mutex)

4.解锁      int pthread_mitex_unlock(pthreadmutex_t*mutex)

5.销毁锁   int pthread_mutex_destroy(pthread_mutex_t*mutex

http://www.dtcms.com/a/334387.html

相关文章:

  • [Python 基础课程]抽象类
  • 强化学习入门教程(附学习文档)
  • (第十七期)HTML图像标签详解:从入门到精通
  • 创新词汇表设计:UniVoc - 中英文混合处理的新方案
  • 安卓11 12系统修改定制化_____列举与安卓 9、10 系统在定制化方面的差异与权限不同
  • 数学建模Topsis法笔记
  • 非功能性需求设计:可解释性、鲁棒性、隐私合规
  • 【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
  • 启发式合并 + 莫队 恋恋的心跳大冒险
  • 汽车大灯ABD算法介绍
  • 【算法】——力扣hot100常用算法技巧
  • leetcode_ 739 每日温度
  • 分享一个大数据的源码实现 基于Hadoop的二手车市场数据分析与可视化 基于Spark的懂车帝二手车交易数据可视化分析系统
  • Windows MCP.Net:革命性的 .NET Windows 桌面自动化 MCP 服务器
  • 嵌入式硬件篇---电容电感
  • 【C++】动态内存管理
  • 嵌入式硬件篇---电平转换电路
  • Python-深度学习(一)
  • Flutter开发 网络请求
  • Obot MCP 网关:用于安全管理 MCP 服务器采用的开源平台
  • DINOv3 论文精读(逐段解析)
  • 一文速通Python并行计算:14 Python异步编程-协程的管理和调度
  • CPP运算符优先级
  • 2508C++,支持rdma通信的高性能rpc库
  • 软件SPI实现(3):SPI协议测试(使用W25Q64)
  • Jenkins常见问题及解决方法
  • 计算机存储器分类和层次结构详解
  • 027 动静态库 —— 静态库
  • Docker数据卷挂载和本地目录挂载
  • 八、SpringBoot项目热部署