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


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

·        针对计数器,可以使用原子加

·        只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)多个线程也不怕,利用queue去处理。(并发转成单线程)

·        RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟释放的做法

·        CAS(Compare-and-Swap),如无锁栈,无锁队列等待(先做,发生改变,再回滚)

 

 

A 这方法虽然不太好,但是常见

B Producer Consumer Queue就是这个,到处都是(项目的异步优化其实也是)

C linux kernel里面大量使用

D 本质上其实就是乐观锁,操作起来很困难。单生产者多消费者或者多生产者单消费者的情况下比较常见,也不容易遇到ABA问题。

 

你可能感兴趣的:(4.并发编程)