Tbb并发哈希映射迭代器

时间:2014-04-06 19:17:06

标签: c++ multithreading parallel-processing tbb

我正在使用迭代器遍历整个tbb并发哈希映射并检查每个(键,值)对。

for (MAP::pair = myHashTable.begin(); myHashTable.end(); pair++)

如何并行化这个迭代器?

1 个答案:

答案 0 :(得分:5)

使用Reference Manual

中描述的range()方法
HashTable_t myHashTable; // assuming HashTable_t is concurrent_hash_map specialization
tbb::parallel_for( myHashTable.range(), [](const HashTable_t::range_type &r) {
    for( HashTable_t::iterator i = r.begin(); i != r.end(); i++);
} );

(我使用表示简洁,但为了明确显示了类型

请注意那里的注意事项:

  

不要在迭代表时调用并发操作,包括count和find。如果需要并发遍历和插入,请使用concurrent_unordered_map。