简单点理解,atomic 是在 cpu 指令级别上实现的锁。所以,除了必不可少的内存栅栏带来流水线效率损失外,几乎可以认为没什么额外的开销了。
而 mutex 的话,光是在内核里睡眠/唤醒一下,就至少是微秒级的时间开销,更别说各种额外的调用、封装、判断了。