- 因为在很多应用场景下,共享资源的锁定状态只会持续很短的一段时间,所以如果频繁的挂起唤醒线程,开销很大。因此可以用自旋锁来避免线程上下文切换。
- 但是自旋锁会一直持有CPU,死循环,所以如果共享资源的访问时间很久,会带来性能的浪费。因此自旋的时间等待时间必须有限度,默认是十次,可以通过参数更改。
- 自适应自旋:动态优化自旋锁的自旋时间。比如在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而允许自旋等待持续相对更长的时间,比如持续100次忙循环。
自旋锁的小总结
最新推荐文章于 2024-05-18 16:42:38 发布