【发布时间】:2013-03-01 04:37:54
【问题描述】:
如果您确切知道无序映射将包含的最大元素数量,并且您预先分配了确切数量的存储桶。
哪些操作在该容器(不是存储在容器中的对象)上是线程安全的?
【问题讨论】:
-
通常 STL 容器对多个读取器是安全的,但对多个写入器却不是。
-
我认为(几乎)所有没有同时写入相同读取位置的读取都是安全的,就像其他容器一样。
-
所以预分配存储桶不会提供额外的线程安全级别? (我期待这可能是答案,但希望不是..)
-
确切的桶数?你真的认为如果哈希映射中有 100 个元素,那么映射正好使用 100 个桶吗?
-
@Doug T,还有 Mark Garcia,您能为此参考一些规范/文档吗?您的 cmets 中有“通常”和“几乎”,实际上它总是代码中非典型且几乎从未发生过的分支,百万分之一爆炸:)
标签: c++ multithreading unordered-map