《C++ 并发编程实战》2. 高级主题

设计基于锁的并发数据结构

线程安全(thread-safe):

  • 多线程执行的操作无论异同,每个线程所见的数据结构都是自洽的
  • 数据不会丢失或破坏,所有不变量终将成立,恶性条件竞争也不会出现

串行化:每个线程轮流访问受互斥保护的数据

我们要保留最必要的串行操作,并且最大限度地实现真正的并发访问

具体看基于锁的四个线程安全数据结构

设计无锁数据结构

这一章是原子操作的实战

有以下几个概念:

  • 非阻塞:假定其他线程都被挂起,则目标线程将在有限步骤内完成自己的操作
  • 无锁:如果多个线程共同操作同一份数据,那么在有限步骤内,其中某个线程能够完成自己的操作
  • 无等待:在某份数据上,每个线程经过有限步骤就能完成自己的操作,即使该份数据同时被其他多个线程所操作

这一章目前用不到,之后再看

设计并发代码