linux驱动编程
作者:互联网
1、自旋锁:参考博文https://blog.csdn.net/helloguoqijun/article/details/77489317
自旋锁是一种轻量级的互斥锁,可以更高效的对互斥资源进行保护。在短期间内进行轻量级的锁定。
和信号量、互斥锁的比较:
缺点:请求它的线程在等待锁重新可用的期间进行自旋(特别浪费处理器时间),所以自旋锁不应该被持有时间过长。如果需要长时间锁定的话, 最好使用信号量。
优点:自旋锁是一种轻量级的互斥锁,可以更高效的对互斥资源进行保护,会关闭系统抢占或者本地中断,因此减少死锁的问题。互斥锁需要做任务切换,阻塞的情况下自旋锁的效率就远高于互斥锁。
各API的比较: spin_lock为了防止内核的抢占死锁,spin_lock_irq为了防止内核和中断的抢占死锁,spin_lock_irqsave为了防止进入自旋状态丢掉之前的中断状态。
标签:linux,lock,编程,互斥,死锁,自旋,驱动,spin,轻量级 来源: https://www.cnblogs.com/mic-chen/p/16497412.html