spinlock和mutex选用方法

资料参考:
《宋宝华 Linux设备驱动开发详解》
 
spinlock和mutex选用方法如下:
1、当锁不能被获取到时,使用互斥体的开销仅仅是上下文切换,使用自旋锁的开销是等待获取自旋锁(由临界区的执行时间决定)。若临界区比较小,适合使用自旋锁。若临界区较大,适合使用互斥锁
2、互斥锁所保护的临界区可包含引起阻塞的代码,而自旋锁要绝对避免用来保护有进程调度的临界区。因为进程调度当进程切换出去之后,另一个进程企图获取本自旋锁,这样就会导致死锁
3、互斥体存在于进程上下文,因此,如果被保护的共享资源需要再中断或软中断情况下使用,则只能选择自旋锁。当然,如果一定要用互斥体,则只能通过mutex_trylock()方式进行,不能获取就立即返回以避免阻塞
 
 
posted @ 2024-03-25 21:27  lethe1203  阅读(7)  评论(0编辑  收藏  举报