关于自旋锁的两个问题

zhangbh0000 2021-02-19 03:59:12
1. 自旋锁 spin lock 许多博客说不释放cpu,那么lock 怎么被释放?如果一直在while 循环里面,其他线程怎么抢占cpu?
2. 有的博客说不会导致cpu 上下文切换, 从用户态到内核态。我理解相同的进程不需要切换用户态和内核态。这个是怎么避免其他的进程抢占cpu,做上下文切换?
...全文
210 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangbh0000 2021-02-28
  • 打赏
  • 举报
回复
感谢解惑,最近又看了下,发现的确自旋锁是要求多cpu的
rumlee 2021-02-22
  • 打赏
  • 举报
回复
自旋锁是不释放cpu,至于其他线程如何抢占cpu,使用自旋锁得有2个以上的cpu,其他线程使用的另外的cpu 自旋锁只能适用于等待锁时间非常短的情况下,cpu切换的时间和等待锁的时间相比,cpu切换时间无法忽略不计的情况下,否则没有意义还不如用互斥信号量。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧