作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是关于std::map
的线程安全的.现在,同时读取是线程安全的,但写入不是。我的问题是,如果我每次都向 map 添加唯一元素,那会是线程安全的吗?
举个例子,如果我有这样的 map std:map<int, std::string> myMap
而且我总是添加新键并且从不修改现有的键值,这会是线程安全的吗?
更重要的是,这会给我带来任何随机运行时行为吗?
增加新key也算修改吗?如果在添加时键总是不同的,那么它修改内存的独立部分不应该是线程安全的吗?
谢谢刀锋
最佳答案
1)当然不是
2) 是的,我希望你会在测试中遇到它,而不是以后
3) 是的,是的。新元素被添加到不同的位置,但在此期间修改了许多指针。
在大多数(如果不是全部)实现中, map 是由某种树实现的。在树中插入新元素会通过重置指针以指向不同节点来重新排列节点来修改它。所以不是线程安全的
关于c++ - C++映射的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234633/
我是一名优秀的程序员,十分优秀!