[英]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.