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

5.24 note

条件变量 实现 互斥的同步

关于线程同步和互斥。及实现方式:

线程同步

线程同步是指多个线程在执行时,按照一定的顺序或规则来访问共享资源,以确保操作的正确性和数据的一致性。比如,多个线程都要访问一个银行账户,如果没有同步机制,可能会出现数据混乱的情况。通过线程同步,可以让线程一个一个地按顺序访问账户,保证账户余额的变化是正确的。

线程互斥

线程互斥是一种特殊的同步机制,它保证在同一时刻,只有一个线程能够访问特定的共享资源。就像一个厕所,同一时间只能有一个人使用,其他人需要等待。线程互斥就是为了避免多个线程同时访问共享资源而导致数据错误或程序出现异常。

实现方式

• 互斥锁:这是最常用的实现线程互斥的方法。当一个线程要访问共享资源时,它会先尝试获取互斥锁。如果锁可用,线程就可以获取锁并访问资源,同时其他线程就只能等待。当线程访问完资源后,会释放锁,让其他线程有机会获取锁并访问资源。

• 信号量:信号量可以用来控制同时访问共享资源的线程数量。它有一个初始值,表示可以同时访问资源的线程数。线程在访问资源前需要获取信号量,如果信号量的值大于0,线程可以获取信号量并访问资源,同时信号量的值减1。当线程访问完资源后,会释放信号量,让信号量的值加1。如果信号量的值为0,线程就需要等待,直到有其他线程释放信号量。

• 条件变量:条件变量通常与互斥锁一起使用,用于在线程之间进行通信。当一个线程需要等待某个条件满足时,它会释放互斥锁并在条件变量上等待。另一个线程在满足条件后,会通知条件变量,唤醒等待的线程。等待的线程被唤醒后,会重新获取互斥锁,然后继续执行。

以上是线程同步和互斥的基本概念及常见实现方式,不同的编程语言和操作系统提供了不同的具体实现方法和API。

 

http://www.xdnf.cn/news/613783.html

相关文章:

  • FFmpeg 安装包全攻略:gpl、lgpl、shared、master 区别详解
  • spring注解旁路问题讨论
  • 使用Python在PowerPoint中插入形状(Shape)
  • 技术文档的进阶之旅
  • 文章记单词 | 第107篇(六级)
  • 3par persona设置错误,linux I/O持续报错
  • mPLUG-Owl3图片描述
  • SQL实战之索引优化(单表、双表、三表、索引失效)
  • FFplay 播放原始数据
  • C++性能测试工具——sysprof的使用
  • 【AUTOSAR网络管理】T_NM_Timeout参数测试指南
  • 【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(4)
  • 强化学习鱼书(8)——DQN
  • Qt window frame + windowTitle + windowIcon属性(3)
  • Android11以上通过adb复制文件到内置存储让文件管理器可见
  • 实验13 数据库权限管理
  • 告别繁琐操作,一键批量发布!
  • Linux下MySQL的安装与使用
  • 开局插第一个眼侦查对方打野的动态
  • 人脸识别技术合规备案最新政策详解
  • 利用条件编译实现RTT可控的调试输出
  • 20250523-BUG-E1696:无法打开元数据文件“platform.winmd(已解决)
  • 写起来比较复杂的深搜题目
  • 差分数组一文全解析
  • Vue.js教学第十三章:深入解析Vuex,前端状态管理核心指南
  • 分布式事务之Seata
  • 根据YOLO数据集标签计算检测框内目标面积占比(YOLO7-10都适用)
  • Linux常用命令简介
  • 驱动开发学习20250523
  • C# :HImage转Mat方法