使用std::atomic
而不是互斥锁的全部目的是:
使用a table of mutexes“模拟”操作的原子性时:
那么为什么发现如此糟糕的原子CPU操作仿真值得呢? std::atomic
中的非无锁定回退机制的用例是什么?
答案 0 :(得分:14)
有时您必须编写可在多个平台上工作的代码,并且在某些平台上可能无需锁就可以支持原子操作,而在其他平台上可能没有锁。使用std::atomic
可以为您带来两全其美的体验:平台可以支持的最佳性能,平台不能支持的合理行为。另一个好处是语义更干净,并且因疏忽而长时间保留比预期更长的时间的风险也较小。