spinlock和mutex选用方法
资料参考:
《宋宝华 Linux设备驱动开发详解》
spinlock和mutex选用方法如下:
1、当锁不能被获取到时,使用互斥体的开销仅仅是上下文切换,使用自旋锁的开销是等待获取自旋锁(由临界区的执行时间决定)。若临界区比较小,适合使用自旋锁。若临界区较大,适合使用互斥锁
2、互斥锁所保护的临界区可包含引起阻塞的代码,而自旋锁要绝对避免用来保护有进程调度的临界区。因为进程调度当进程切换出去之后,另一个进程企图获取本自旋锁,这样就会导致死锁
3、互斥体存在于进程上下文,因此,如果被保护的共享资源需要再中断或软中断情况下使用,则只能选择自旋锁。当然,如果一定要用互斥体,则只能通过mutex_trylock()方式进行,不能获取就立即返回以避免阻塞
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步