无锁化编程有哪些常见方法?----阿里巴巴2015实习生笔试题

时间:2021-11-29 12:09:15

无锁化编程有哪些常见方法?

正确答案: D   你的答案: A (错误)

针对计数器,可以使用原子加
只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)
RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟释放的做法
CAS(Compare-and-Swap),如无锁栈,无锁队列等待


解析:

ABCD吧。
A 这方法虽然不太好,但是常见
B ProducerConsumerQueue就是这个,到处都是
C linux kernel里面大量使用
D 本质上其实就是乐观锁,操作起来很困难。。单生产者多消费者或者多生产者单消费者的情况下比较常见,也不容易遇到ABA问题。