我有一个并行循环和对 std::map
的写访问。我想同时访问 map 的不同部分,即我想访问 map[a] 和 map[b] 以获得不同的 a,b。然而,当我发现这是不可能的时,我想知道是否有一个好的替代方案或如何以不同的方式实现这一目标!
最佳答案
我可能是错的,但我相信将现有元素修改为 map 是安全的,只要您不接触相同的元素(因为这不会修改 map 的底层结构)。因此,如果您提前插入 map[a]
和 map[b]
,您的单独线程应该能够修改这些现有元素。
也就是说,使用互斥锁等常规同步技术来保护对 map 的访问可能更清洁、更安全。
关于c++ - std::map 的线程安全替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290707/