【问题标题】:How to convert tbb concurrent_hash_map to regular std::map?如何将 tbb concurrent_hash_map 转换为常规 std::map?
【发布时间】:2020-05-16 08:39:51
【问题描述】:

我正在处理一些并发程序,但不知道如何将tbb::concurrent_hash_map 转换为常规std::map 或获取值,以另一种方式存储在并发映射中。 有人可以帮忙吗?

【问题讨论】:

    标签: c++ concurrenthashmap tbb


    【解决方案1】:

    我会以天真的方式来做,迭代 hashmap 并将项目添加到循环中的 std::map。

    【讨论】:

    • 如果另一个线程的擦除操作在迭代器被取消引用之前使其无效会发生什么?尚不清楚(至少对我而言)tbb::concurrent_hash_map 是否可以防止这种情况发生?
    • 我使用map迭代来写结果,即在主线程中,在线程中你应该使用mac访问器和find方法。你提到的这种方法可以防止这种情况。
    • @G.M. tbb::concurrent_hash_map 不提供安全的迭代器,即,您只能迭代一个 concurrent_hash_map,前提是只要您使用迭代器就不会改变它。
    • @mpoeter 谢谢,我就是这么想的。在这种情况下,这个答案是不正确的。
    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2017-05-08
    相关资源
    最近更新 更多