在std :: map中引用对象是否是线程安全的?
std::map< std::string, Object > _objects;
Run Code Online (Sandbox Code Playgroud)
map可以从许多线程更改,并且此访问是同步的,但引用只能从1个实例和线程访问的值(Object&).是否使用Object进行写操作是否安全,如果另一个线程将添加项目到映射?它会重新分配吗?
我在这里阅读了很多帖子,问题是C++的标准容器(如"list"或"map"是线程安全的,所有人都说它不是一般的.并行读取应该没问题,但并行写入或者并行读写可能会导致问题.
现在我发现在www.cplusplus.com上,在大多数操作期间访问或修改列表是安全的.
一些例子:
访问容器(const和非const版本都不会修改容器).不访问映射值:同时访问或修改元素是安全的.
容器已修改.同时访问现有元素是安全的,尽管容器中的迭代范围不是.
我是否想念cplusplus.com或者我还有什么关于std容器中线程安全的知识.
提前致谢!
PS:我要的是C++ 03而不是C++ 11