主要内容:
共享数据带来的问题
使用互斥量保护数据
数据保护的替代方案
共享数据带来的问题
当涉及到共享数据时,问题可能是因为共享数据修改所导致。如果共享数据是只读的,那么只读操作不会影响到数据,更不会涉及对数据的修改,所以所有线程都会获得同样的数据。但是当一个或多个线程要修改共享数据时,就会产生很多的麻烦。这种情况下,就必须小心谨慎,才能确保一切所有线程都工作正常。
1.1 条件竞争
1.2 避免恶性条件竞争
使用互斥量保护共享数据
2.1 C++中使用互斥量
2.2 精心组织代码来保护共享数据
2.3 发现接口内的条件竞争
2.4 死锁:问题描述与解决方案
2.5 避免死锁的进阶指导
2.6 灵活的锁--std::unique_lock
2.7 在不同域中传递互斥量所有权
2.8 锁的粒度
保护共享数据的替代设施
3.1 保护共享数据的初始化过程
3.2 保护很少更新的数据结构
3.3 嵌套锁
总结