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

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

如何并行化此迭代器?

最佳答案

使用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++);
} );

(为了简化起见,我使用c++11,但是为了c++03,显式显示了类型)

并且请注意此处的注意事项:

10-08 08:32