使用<code>std::atomic</code>而不是互斥锁的全部目的是获得:
当用互斥表“模拟”操作的原子性时:
那么,为什么对原子CPU操作的这种糟糕的模拟是值得的呢?std::atomic
中的非无锁回退机制的用例是什么?
有时,您必须编写可以在多个平台上工作的代码,原子操作可能在一些平台上不受锁的支持,而在其他平台上可能不受支持。使用< code>std::atomic可以让您两全其美——在平台支持的情况下获得最佳性能,在平台不支持的情况下获得合理的行为。另一个好处是语义更清晰,不经意地持有锁的时间比预期的长或短的风险更小。