【问题标题】:Iterating over the contents of concurrent_hash_map迭代 concurrent_hash_map 的内容
【发布时间】:2026-01-01 13:10:01
【问题描述】:

我正在使用 tbb::concurrent_hash_map。我了解插入和删除是安全操作。在插入和删除方面被认为是安全的哈希映射上进行迭代。如果没有,我可以使用任何数据结构进行安全迭代。

【问题讨论】:

    标签: concurrency iteration tbb


    【解决方案1】:

    由于 C++ 和 TBB 中不支持内存回收 (GC),因此不可能同时确保删除和迭代安全而不会对性能产生重大影响。因此,TBB 有 2 个用于哈希表的并发容器:

    • concurrent_hash_map 具有安全的 erase() 和元素级访问同步,但 without safe iteration
    • concurrent_unordered_*(例如concurrent_unordered_map)没有安全的erase()和元素访问同步,但有线程安全的迭代支持。

    【讨论】: