我有一个并行循环和对std::map
. 我想同时访问地图的不同部分,即我想访问 map[a] 和 map[b] for a,b 不同。在我发现这是不可能的,但是我想知道是否有一个好的替代方案或如何以不同的方式实现这一目标!
问问题
291 次
3 回答
1
我可能是错的,但我相信将现有元素修改为地图是安全的,只要您不接触相同的元素(因为这不会修改地图的底层结构)。因此,如果您提前插入map[a]
,map[b]
您的单独线程应该能够修改这些现有元素。
也就是说,仅使用诸如互斥锁之类的普通同步技术来保护对映射的访问可能更清洁、更安全。
于 2012-09-06T06:08:45.807 回答
0
只要您不改变下属,就很有可能单独改变map[a]
和改变。map[b]
map
如果您希望同时改变关联容器,请查看concurrent_unordered_map
PPL 或 TBB。
于 2012-09-06T12:34:03.597 回答
0
如果可能,您可以尝试为每个工作人员提供自己的地图副本,然后合并结果。这种方式根本不需要锁定。
于 2012-09-06T12:37:48.423 回答