场景
- 在开发
C/C++
多线程程序时,STL
集合类是我们经常用到的类,比如vector
. 而C/C++
的这些集合类并没有同步版本,所以在多线程访问时,如果某个线程正在修改集合类A
, 而其他线程正在访问A
,那么会造成数据冲突,导致程序抛出异常。这里说的访问A
,意思是调用A
的任何方法。难道我们需要在用到A
的地方对A
进行加锁? 麻烦不止,而且很容易造成性能下降。
数据冲突线程1访问集合B
:
auto &one = gCollectionB[loadInt];
auto to_int =