如何用c++原子保证数据依赖?
我想在多线程的映射中添加一些东西,我使用atomic_uint64_t作为指示器。 在每一个添加步骤中,指标++。
atomic_uint64_t id;
id.fetch_add(1,memory_order_relaxed);
map[id] = "something";
如何保证map[id]="something"
中的id与id.fetch_add
的结果相同。
最佳答案
你不能。
id
的原子性不会阻止其他线程增加 fetch_add
调用和 map[id]
赋值之间的值/插入。
使用 mutex而是保护整个部分。
通过使用互斥体,您还可以防止 map 访问的数据争用。
关于c++ - 如何用原子性保证数据依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56185373/