从boost无序转换为tbb并发哈希映射

时间:2014-03-24 22:11:11

标签: c++ hashmap tbb

我是C ++的新手,我一直在寻找关于tbb并发哈希映射的初学者教程。我一直在我的C​​ ++程序中使用boost无序哈希映射,现在我想使用tbb的并发哈希映射,因为多个线程将立即写入哈希映射。

我正在对boost的哈希映射进行以下四个操作:

typedef boost::unordered_map<string, std::vector<int> > MAP;
MAP myMap;
  1. 插入myMap:

    string key = "somestring"
    int somevalue = 1 
    myMap[key].push_back(somevalue);
    
  2. 迭代myMap中的所有键:

    BOOST_FOREACH(MAP::value_type pair, myMap)
    {
            string key  = pair.first;
    }
    
  3. 返回与密钥关联的值:

    MAP::const_iterator iter = myMap.find("somekey");
    
  4. 如何使用tbb并发哈希映射实现1,2和3?请注意,在所有线程完成插入

    后,我只执行2和3

1 个答案:

答案 0 :(得分:1)

您应该能够简单地将typedef更改为typedef tbb::concurrent_unordered_map<string, std::vector<int> > MAP;并安全地使用具有多个线程的容器。

insert,iterators(begin ... end)和find方法都以相同的方式工作,但与unordered_map不同,它们是线程安全的。