繁体   English   中英

std :: map的线程安全替代方法?

[英]thread-safe alternative for std::map?

我有一个并行循环,并可以访问std::map 我想同时访问地图的不同部分,即我想访问不同的a,b的map [a]和map [b]。 我发现这是不可能的,但是,我想知道是否有很好的替代方法,或者如何以其他方式实现这一目标!

我可能是错的,但是我相信只要您不触摸相同的元素,就可以将现有元素修改到地图上是安全的(因为这不会修改地图的基础结构)。 因此,如果您提前插入map[a]map[b] ,则单独的线程应该能够修改那些现有元素。

也就是说,仅使用普通的同步技术(例如互斥锁)来保护对地图的访问可能会更清洁,更安全。

只要您不对下标map进行变异,就很有可能分别对map[a]map[b]进行变异。

如果你想同时变异的关联容器,检查出concurrent_unordered_map从PPL或TBB。

如果可能,您可以尝试为每个工作人员提供自己的地图副本,然后合并结果。 这样,根本就不需要锁定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM