C++并发与多线程编程(3)---线程间共享数据

主要内容:

  • 共享数据带来的问题

  • 使用互斥量保护数据

  • 数据保护的替代方案

  1. 共享数据带来的问题

当涉及到共享数据时,问题可能是因为共享数据修改所导致。如果共享数据是只读的,那么只读操作不会影响到数据,更不会涉及对数据的修改,所以所有线程都会获得同样的数据。但是当一个或多个线程要修改共享数据时,就会产生很多的麻烦。这种情况下,就必须小心谨慎,才能确保一切所有线程都工作正常。

1.1 条件竞争

1.2 避免恶性条件竞争

  1. 使用互斥量保护共享数据

2.1 C++中使用互斥量

2.2 精心组织代码来保护共享数据

2.3 发现接口内的条件竞争

2.4 死锁:问题描述与解决方案

2.5 避免死锁的进阶指导

2.6 灵活的锁--std::unique_lock

2.7 在不同域中传递互斥量所有权

2.8 锁的粒度

  1. 保护共享数据的替代设施

3.1 保护共享数据的初始化过程

3.2 保护很少更新的数据结构

3.3 嵌套锁

  1. 总结

你可能感兴趣的:(C++11,c++)