社区
Java SE
帖子详情
关于自旋锁的两个问题
zhangbh0000
2021-02-19 03:59:12
1. 自旋锁 spin lock 许多博客说不释放cpu,那么lock 怎么被释放?如果一直在while 循环里面,其他线程怎么抢占cpu?
2. 有的博客说不会导致cpu 上下文切换, 从用户态到内核态。我理解相同的进程不需要切换用户态和内核态。这个是怎么避免其他的进程抢占cpu,做上下文切换?
...全文
277
2
打赏
收藏
关于自旋锁的两个问题
1. 自旋锁 spin lock 许多博客说不释放cpu,那么lock 怎么被释放?如果一直在while 循环里面,其他线程怎么抢占cpu? 2. 有的博客说不会导致cpu 上下文切换, 从用户态到内核态。我理解相同的进程不需要切换用户态和内核态。这个是怎么避免其他的进程抢占cpu,做上下文切换?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhangbh0000
2021-02-28
打赏
举报
回复
感谢解惑,最近又看了下,发现的确自旋锁是要求多cpu的
rumlee
2021-02-22
打赏
举报
回复
自旋锁是不释放cpu,至于其他线程如何抢占cpu,使用自旋锁得有2个以上的cpu,其他线程使用的另外的cpu 自旋锁只能适用于等待锁时间非常短的情况下,cpu切换的时间和等待锁的时间相比,cpu切换时间无法忽略不计的情况下,否则没有意义还不如用互斥信号量。
CAS与
自旋锁
、ABA
问题
基本概念 CAS(Compare And Swap)是一种比较交换算法,很多人会把CAS和
自旋锁
混为一谈,两者还是有差别,前者是一种原子算法,目的是在不使用操作系统互斥信号量的重量级锁的前提下提供一种原子操作,后者基于CAS算法实现。 操作系统底层对CAS的都提供了不同的指令级实现: x86 cmpxchg arm LL/SC 查看openJDK的源码实现的代码片段。完整代码地址:源码地址 ......
【Linux】
自旋锁
以及 读者写者
问题
自旋锁
与互斥锁比较类似,
自旋锁
也是为实现保护共享资源而提出一种锁机制。两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是
自旋锁
不会引起调用者睡眠,如果
自旋锁
已经被别的执行单元占用,线程就会一直循环尝试去申请锁。
关于CAS的ABA,
自旋锁
问题
记录
本篇是记录在了解CAS时,遇到的几个困惑。
Linux
自旋锁
死锁
问题
Linux
自旋锁
死锁
问题
。
CAS(
自旋锁
优化)及ABA
问题
CAS (
自旋锁
优化) CAS的全称是 compare and swap,他是同步类的基础, javade concurrent中的原子性都是通过CAS进行实现的 **jdk8**中底层调用的native方法是Unsafe文件中的 compareAndSwap jdk11中有了升级调用的native方法是 Unsafe文件中 weakCompareAndSet 原理 按照理解,因为是
自旋锁
优化,实际不是上锁就是在某个线程在改变volatile之前需要验证一下,要改变的值和预期的值是否一致,如果一
Java SE
62,622
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章