小编Phi*_*ppe的帖子

使用“memory_order::relaxed”或“memory_order::acq_rel”生成唯一ID?

我在几个地方读到,宽松的排序可以生成唯一的 ID。我对此表示怀疑,因为如果两个线程同时调用:

uniqueId.fetch_add(1, std::memory_order::relaxed);

那么线程 A 递增的值可能对线程 B 不可见。这意味着,两个线程可以获得相同的唯一 ID。

出于这个原因,我宁愿使用std::memory_order::acq_rel

你怎么认为?

在实践中无法测试。

c++ atomic memory-model stdatomic

0
推荐指数
1
解决办法
147
查看次数

标签 统计

atomic ×1

c++ ×1

memory-model ×1

stdatomic ×1