如果您确切知道无序映射将包含的元素的最大数量,并预先分配了确切数量的存储桶。

在该容器上执行哪些操作是线程安全的(不是存储在该容器中的对象)?

最佳答案

从您的问题看来,您似乎并不完全了解哈希映射(也称为unordered_map)是如何工作的。您可以阅读this article on wiki以更好地理解它。所以如果你不是故意的
您具有minimal perfect hash function的值,那么将存储桶的数量设置为与元素的预期数量完全相同将使情况变得更糟。如果您确实希望拥有最小的完美哈希函数,那么这是一个非常特殊的情况,您应该提到有问题的内容以及可能如何实现。

无论如何,我怀疑即使您提供最小的完美哈希函数,在unordered_map的操作上是否可以获得任何正式的线程安全保证。

关于c++ - 预分配的unordered_map的线程安全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15150580/

10-12 20:00