读书笔记《C++并发编程实战》(7) - 无锁的并发数据结构
无锁数据结构: 不使用锁就能实现安全并发地存取的数据结构,可避免数据竞争、死锁、或锁引起性能限制等,以实现最大程度的提高并发性。 设计正确的无锁或无等待的数据结构是比较困难的,若确定需要无锁的情况下产生的收益高于代价时才应考虑(这个需要在多各方面考虑)。 无锁数据结构优缺点: 优点: 1. 最大限度的提高并发性,减少了线程等待的时间; 2. 提高健壮性,避免锁机制引入可能导致的数据结构损坏。 缺点: 1. 为了确保持有不变量或者选择可以持有的替代不变量需要加上操作上的顺序问题,需要加上原子操作,以确保正确的顺序对其他线程可见, 使得设计无锁数据结构比使用锁的更为困难。 2. 无锁可能导致性能下降,原子操作可能比非原子操作慢,无锁数据结构可能需要更多的原子操作,此外硬件在存取相同的原子变量的线程间 同步数据。