从boost无序到tbb并发哈希映射的转换
Converting from boost unordered to tbb concurrent hash map
我是c++的新手,我一直在寻找关于并行哈希映射的初学者教程,但徒然。我一直在我的c++程序中使用boost无序哈希映射,现在我想使用tbb的并发哈希映射,因为多个线程将同时写入哈希映射。
我在boost的哈希映射上做了以下四个操作:
typedef boost::unordered_map<string, std::vector<int> > MAP;
MAP myMap;
插入myMap:
string key = "somestring" int somevalue = 1 myMap[key].push_back(somevalue);
遍历myMap中的所有键:
BOOST_FOREACH(MAP::value_type pair, myMap) { string key = pair.first; }
返回与键相关的值:
MAP::const_iterator iter = myMap.find("somekey");
如何使用tbb并发哈希映射实现1、2和3 ?注意,在之后,我只执行了2和3 ,所有线程都完成了它们的insert
您应该能够简单地将类型定义更改为typedef tbb::concurrent_unordered_map<string, std::vector<int> > MAP;
,并安全地使用多线程容器。
插入、迭代器(begin ..)End)和find方法都以相同的方式工作,但与unordered_map不同,它们是线程安全的。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何按值对无序哈希映射进行排序
- 哈希映射如何在 c++ 中实现?
- C++中的哈希映射等效
- 以字符串向量作为值的哈希映射
- 来自并发哈希映射的迭代器是否安全
- 如何在这个哈希映射中实现 AVL 树
- 无法迭代结构"string"的哈希映射:[列表] C++
- 什么是最快的解决方案,用于读/写入哈希映射
- 可以安全地依赖unordered_map中的初始化值(哈希映射)
- 使用按插入方式排序的参数创建哈希映射
- 哈希映射没有可行的重载 '='
- 使用分配器对哈希映射进行高效的序列化和反序列化
- 由于动态数组而导致的哈希映射内存泄漏
- 为boost哈希映射定义自定义哈希函数
- 是我们迭代时更改哈希映射的行为,已定义
- 哈希映射和有序遍历
- 哈希映射错误:与调用 '(const __gnu_cxx::.