2

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

4

2 回答 2

0

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

的文档dense_hash_map没有指定有关线程安全的任何内容,因此最具防御性的方法是假设它甚至不是可重入的。但是,使类不可重入需要不受保护的全局可变状态,并且很难找到dense_hash_map要求这样做的论据,但是鉴于它将其内容存储到磁盘,这可能就是您所希望的。在没有文档确认的情况下假设事情是线程安全的,即使在可变操作上也是牵强的。

除非有文档,否则您可能希望查看实现,看看您是否可以验证 API 至少某个子集的可重入性。

于 2012-06-19T16:20:38.303 回答
0

根据论文Scalable, High Performance Ethernet Forwarding with CUCKOOSWITCH (2013),对于读写google::dense_hash_map来说不是线程安全的:

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

我找不到任何其他关于google::dense_hash_map线程安全与否的信息。

于 2020-01-28T22:13:41.213 回答