New*_*oid 3 c++ parallel-processing multithreading tbb
我正在使用迭代器遍历整个tbb并发哈希映射并检查每个(键,值)对.
for (MAP::pair = myHashTable.begin(); myHashTable.end(); pair++)
Run Code Online (Sandbox Code Playgroud)
如何并行化这个迭代器?
使用参考手册中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++);
} );
Run Code Online (Sandbox Code Playgroud)
(我使用c ++ 11来简洁但为c ++ 03明确显示类型)
请注意那里的注意事项:
不要在迭代表时调用并发操作,包括count和find.如果需要并发遍历和插入,请使用concurrent_unordered_map.
| 归档时间: |
|
| 查看次数: |
1961 次 |
| 最近记录: |