我正在使用迭代器遍历整个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,显式显示了类型)
并且请注意此处的注意事项: