google / dense_hash_map的线程安全性

时间:2012-06-19 16:10:37

标签: c++ multithreading thread-safety hashmap

dense_hash_map线程中的读取操作是否安全?

2 个答案:

答案 0 :(得分:0)

通常认为可重入类型的const C ++对象(大多数是)是线程安全的。

dense_hash_map的文档没有说明线程安全的任何内容,因此最防御的方法是假设它甚至不是可重入的。然而,它需要不受保护的全局可变状态来使类不可重入,并且很难找到dense_hash_map要求它的参数,但看到它将其内容存储到磁盘,这可能是您所希望的全部对于。即使在可变操作上,假设事物是线程安全的,如果没有文档的确认,也是牵强附会的。

除了文档之外,您可能需要查看实现,以了解是否可以验证至少某些API子集的重入性。

答案 1 :(得分:0)

根据Scalable, High Performance Ethernet Forwarding with CUCKOOSWITCH(2013年)一文,google::dense_hash_map对于读取和写入不是线程安全的

[...]因此,我们还将三个非线程安全的哈希表进行了比较:STL的hash_map和Google的sparse_hash_mapdense_hash_map。 [...]这些非线程安全的表不支持并发读取和写入。

我找不到有关google::dense_hash_map是否是线程安全的其他信息。