为什么std :: atomic_is_lock_free不是静态constexpr?

时间:2014-09-15 09:48:25

标签: c++ c++11 atomic

我很困惑。实现如何才能知道类型是否仅在运行时是原子的?

1 个答案:

答案 0 :(得分:5)

编译器可能不知道代码将在哪个CPU上运行,并且CPU的无锁功能可能不同。例如,CPU可能不支持long类型的原子操作(因此可能需要锁定),但如果系统只有一个核心,它们可能是原子级的,因为它们不能被中断,没有其他核心可以参加比赛(所以不需要特别的东西,而且这种类型是无锁的)。