LockFree编程

如果想实现一个无锁队列:

  • 数组实现,可以使用环形数组队列来避免ABA问题。
  • 链表实现,可以使用Dummy头指针来实现两线程读写队列。

无锁编程没有想象的简单,有下面几个问题:

  • CAS的ABA问题
  • 编译器指令重排问题
  • CPU乱序执行问题

这个几个问题的解决办法都很复杂,更多见内存栅栏

最终我觉得还是用加锁实现比较方便。

你可能感兴趣的:(LockFree编程)