讨论/面试考题/atomic为啥比锁效率高/
atomic为啥比锁效率高

便于大家讨论两这区别,请从实际底层实现解答此问题

展开讨论
共 5 个讨论

Java里的atomic是CAS加自旋,本质是忙循环(busy loop),不需要挂起线程,自然也就节省了上下文切换。但注意,不讲场景都是耍流氓,弱竞争下,自旋确实可以提高效率;但一旦竞争激烈,自旋也是需要耗费时间片的,会有大量的CPU被浪费,并不见得效率多高,这种时候还是需要使用重量级的锁,去挂起线程,让它进入Blocking状态。

8

cpp里面 如果cpu指令支持 atomic是无锁的

aqs实现的锁基本都可以算乐观锁,通过版本的比较去做交换。不会向底层申请重量级锁。

主要因为线程状态的切换需要时间

自旋锁就是用原子操作实现的,加锁解锁就是原子地更新锁的状态,不涉及操作系统层。