我在几个地方读到,宽松的排序可以生成唯一的 ID。我对此表示怀疑,因为如果两个线程同时调用:
uniqueId.fetch_add(1, std::memory_order::relaxed);
那么线程 A 递增的值可能对线程 B 不可见。这意味着,两个线程可以获得相同的唯一 ID。
出于这个原因,我宁愿使用std::memory_order::acq_rel
std::memory_order::acq_rel
你怎么认为?
在实践中无法测试。
c++ atomic memory-model stdatomic
atomic ×1
c++ ×1
memory-model ×1
stdatomic ×1