多线程相关内核对象使用情况对比
2015-11-03 17:22
267 查看
主线程与子线程之间要进行同步访问公共变量,子线程之间要互斥的访问公共变量。如下列出几种常用的同步互斥方法。
(1)关键段,criticalSection,可以用于线程间的互斥,不可以用于线程间同步,不能跨进程使用,有线程所有权,无需要处理“遗弃”问题。
(2)互斥量,mutex, 也可以解决互斥问题,不能解决同步问题,可以跨进程使用,拥有线程所有权,无需要处理“遗弃”问题。
(3)事件 , event, 可以解决同步问题也可以解决互斥问题,可以跨进程使用,没有线程所有权,不能处理“遗弃”问题。
(4)信号量,semaphore,用来处理主线程和子线程之间的同步问题,可以跨进程使用,不能处理“遗弃”问题。
(1)关键段,criticalSection,可以用于线程间的互斥,不可以用于线程间同步,不能跨进程使用,有线程所有权,无需要处理“遗弃”问题。
(2)互斥量,mutex, 也可以解决互斥问题,不能解决同步问题,可以跨进程使用,拥有线程所有权,无需要处理“遗弃”问题。
(3)事件 , event, 可以解决同步问题也可以解决互斥问题,可以跨进程使用,没有线程所有权,不能处理“遗弃”问题。
(4)信号量,semaphore,用来处理主线程和子线程之间的同步问题,可以跨进程使用,不能处理“遗弃”问题。
同步 | 互斥 | 可否跨进程使用 | 能否处理“遗弃”问题 | |
关键段 | 不可以 | 可以 | 不能 | 可以 |
互斥量 | 不可以 | 可以 | 可以 | 可以 |
事件 | 可以 | 可以 | 可以 | 不可以 |
信号量 | 可以 | ? | 可以 | 不可以 |
相关文章推荐
- yii2 pdo 应用
- 浅谈搜索引擎技术原理与架构
- content type
- [LeetCode]Longest Increasing Subsequence
- spring4 maven3 mybatis
- 高性能MySql(一)
- CCS5.5从硬盘读入.dat数据格式的单张图像
- Rails
- -bash: mysql: command not found mac
- Android_shape分析
- javascript定义对象写法
- BootStrap学习(1)
- VS2005通过网络连接CE设备进行调试开发
- 安卓动态获取及更改view的长宽
- 使用sqlmap中tamper脚本绕过waf
- MFC创建Splash主要步骤
- C编译器、链接器、加载器详解
- android开发游记:封装http请求,快速实现网络加载
- oracle数据库学习第二天
- struts2 数据传输问题---“POST方式提交数据量过大,在后台接收不到数据”问题的解决