首页 > 其他 > 详细

Concurrency and Race Conditions

时间:2015-09-25 21:32:55      阅读:220      评论:0      收藏:0      [点我收藏+]

内核中的并发管理设施:

1. 信号量: P操作将信号量的值减 1 ,判断值是否大于 0 ,如果大于 0 的话,进程继续执行。否则进入阻塞队列等待被唤醒。

       V操作将信号量的值加 1, 判断值是否小于 0 ,如果小于 0 的话,首先唤醒被阻塞的进程,然后退出,否则直接            退出。

2. 互斥体: 用于互斥的信号量。

3. 读写信号量: 允许多个并发的读,并对写进行互斥,且写的优先级比读的优先级高。

4. 完成量: 在当前线程之外初始化一个活动, 然后在当前进程中等待完成,而活动完成后操作完成量,通知活动的完成。

5. 自旋锁:进程尝试获得自旋锁,如果获得成功,则进程继续执行,如果自旋锁被别的进程占用,则该进程进入忙循环并重复检查    这个锁,直到该锁可用为止。

注意: 拥有自旋锁的代码都必须是原子的,它不能因为任何原因放弃处理器,特指当别的任何上下文有对自旋锁的操作时。

6. 原子变量:原子变量的操作由单个机器指令来操作。

7. 顺序锁:保护的资源很少,很简单,会频繁访问而且写入访问很少发生且必须快速。读取者需要检测是否和写入者发生冲突,当发生冲突时就需要重试对资源的访问。

8. RCU 读取-复制-更新: 在需要修改数据时,写入线程首先复制,然后修改副本,之后用新的版本替代相关指针。替换的时机是老的版本上没有其他引用时。

Concurrency and Race Conditions

原文:http://www.cnblogs.com/youngvoice/p/4839332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!