《C++ 并发编程实战》2. 高级主题
设计基于锁的并发数据结构
线程安全(thread-safe):
- 多线程执行的操作无论异同,每个线程所见的数据结构都是自洽的
- 数据不会丢失或破坏,所有不变量终将成立,恶性条件竞争也不会出现
串行化:每个线程轮流访问受互斥保护的数据
我们要保留最必要的串行操作,并且最大限度地实现真正的并发访问
设计无锁数据结构
这一章是原子操作的实战
有以下几个概念:
- 非阻塞:假定其他线程都被挂起,则目标线程将在有限步骤内完成自己的操作
- 无锁:如果多个线程共同操作同一份数据,那么在有限步骤内,其中某个线程能够完成自己的操作
- 无等待:在某份数据上,每个线程经过有限步骤就能完成自己的操作,即使该份数据同时被其他多个线程所操作
这一章目前用不到,之后再看