首页 > 其他 > 详细

原子访问、自旋锁、互斥锁、信号量

时间:2019-04-04 00:27:39      阅读:186      评论:0      收藏:0      [点我收藏+]

内核防止竞争状态的常用手段:原子访问、自旋锁、互斥锁、信号量

原子访问:整个访问过程不能被打断,一步执行完。主要用来做计数,

互斥锁:其实就是一种等待锁,就像平常去卫生间一样,进去后要上锁,其他人会在一直等待(类似等待队列),当从卫生间出来解锁后,下一个人才能进去。

上锁

mutex_lock:别人上锁期间,自己不能被打断,即不能从等待队列里跳出;mutex_lock_interruptible:别人上锁期间,可以被打断从等待队列里跳出来(如不想再等了);

解锁

mutex_unlock

信号量:semaphore,用的时候先定义一个信号量变量,如struct semaphore lock,然后再用函数去初始化这个信号量为一个值,然后用的时候去一次一次的减一。

和互斥锁很相似(互斥锁是一种特殊的信号量,只能被打开一次,A去打开了B就不能打开了,这就叫互斥。初始化值为1的信号量便是一个互斥锁),互斥锁的出现比信号量晚,实现上比信号量优秀,尽量使用互斥锁。

自旋锁:是在多核CPU的这个年代被发明的,专门应对多核CPU的

原子访问、自旋锁、互斥锁、信号量

原文:https://www.cnblogs.com/zhangshuaifeng/p/10652535.html

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