首页 > 系统服务 > 详细

linux同步机制

时间:2019-08-23 22:32:11      阅读:120      评论:0      收藏:0      [点我收藏+]

1、自旋锁

获得自旋锁之后禁止内核抢占,但可以被中断上半部打断。运行于中断上下文

单cpu不可抢占内核:空操作

单cpu可抢占内核:禁止内核抢占,不发生自旋

多cpu可抢占内核:禁止内核抢占+自旋

2、互斥锁

内核可以抢占,可以被其他进程抢占,运行于进程上下文

3、读写锁

由于其特殊的逻辑使得其效率相对普通的互斥锁和自旋锁要慢一个数量级,按POSIX标准 在线程申请读锁并未释放前本线程申请写锁是成功的,但运行后的逻辑结果是无法预测。读和写同时获取锁,写具有优先获取。特殊的自旋锁,禁止抢占。

4、顺序锁

对读写锁的一种优化,禁止内核抢占,读和写可以同时进行,多个读者可以同时访问临界资源,但不能同时写

读写可以同时进行这是读写锁不具备的,但使用顺序锁也有限制条件:访问的临界资源不能是指针

5、RCU(read-copy update)

读写可以同时进行,写数据时,先拷贝然后修改,再用更新好的数据覆盖原有数据。

同样获得锁之后禁止内核抢占

6、递归锁

互斥锁的一个特例,互斥锁设置参数PTHREAD_MUTEX_RECURSIVE_NP,运行互斥锁递归加锁和释放锁

7、原子操作

8、信号量

9、信号

10、barrier(信号屏障)

barrier()函数前后的代码执行不能越过barrier

 

linux同步机制

原文:https://www.cnblogs.com/zhu-g5may/p/11402395.html

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