CAS问题
来源:7-4 本章总结_

Sweet2021
2020-01-04
老师,这里说“自旋时间过长”是什么意思?“自旋”又是啥意思?
写回答
1回答
-
“自旋”可以理解为“自我旋转”,这里的“旋转”指“循环”,比如 while 循环或者 for 循环。“自旋”就是自己在这里不停地循环,直到目标达成。而不像普通的锁那样,如果获取不到锁就进入阻塞。
CAS利用自旋来不停的尝试,这就是自旋锁的原理,关于自旋锁在下一个章节,也就是“锁”的这个章节会有详细介绍。
自旋锁是有缺点的。它最大的缺点就在于虽然避免了线程切换的开销,但是它在避免线程切换开销的同时也带来了新的开销,因为它需要不停得去尝试获取锁。如果这把锁一直不能被释放,那么这种尝试只是无用的尝试,会白白浪费处理器资源。也就是说,虽然一开始自旋锁的开销低于线程切换,但是随着时间的增加,这种开销也是水涨船高,后期甚至会超过线程切换的开销,得不偿失。这同样也是CAS的缺点。
012020-01-04