【Linux应用】自旋锁和互斥锁的区别
2021/9/16 7:06:12
本文主要是介绍【Linux应用】自旋锁和互斥锁的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
总结自旋锁和互斥锁之间的区别,如下:
- 实现方式的区别:互斥锁是基于自旋锁而实现的,所以自旋锁相较于互斥锁更加底层。
- 开销上的区别:获取不到互斥锁会陷入阻塞状态(休眠),直到获取到锁时被唤醒;而获取不到自旋锁会在原地“自旋”,直到获取到锁;休眠和唤醒的开销是很大的,所以互斥锁的开销远高于自旋锁、自旋锁的效率远高于互斥锁;但如果长时间“自旋”等待,会使得CPU使用效率降低,故自旋锁不用于等待时间比较长的情况。
- 使用场景的区别:自旋锁在用户态应用程序中使用的比较少,通常在内核代码中使用的比较多;因为自旋锁可以在中断服务程序中使用,而互斥锁则不行,在执行中断服务程序时要求不能休眠、不能被抢占(内核使用自旋锁会自动禁止抢占),一旦休眠意味着执行中断服务函数时主动交出了CPU使用权,休眠结束时无法返回到中断服务函数中,这样就会导致死锁。
这篇关于【Linux应用】自旋锁和互斥锁的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南