C++ 原子对象无锁保证

c++ atomic object lock free guarantee

我有跟进这个问题 Why is is_lock_free a member function?

总结一下这个问题中的观点:属性 无锁只能被类型的实例知道,而不是类型的任何实例。

我想知道一个实例在运行时的某个时间点是否是无锁的,属性 是否保证(根据 c++11 标准或更高版本)在其余时间为真执行?

谢谢

标准并没有保证这么多字,但我会说它是明确暗示的:

  • 如果实例不打算保持无锁状态,那么在从 is_lock_free 获取结果和使用结果之间就会出现竞争条件:就是这种情况如果这是一个有效的问题,我希望在标准中明确提及

  • 29.4/2 "The function atomic_is_lock_free(29.6) indicates whether the object is lock-free. In any given program execution, the result of the lock-free query shall be consistent for all pointers of the same type." 建议 实例是否无锁不太可能在程序执行期间更改。

如果您决心(偏执狂?)保证实例的无锁状态在程序 运行 期间不受更改,您可以简单地调用 atomic_is_lock_free实例...(如果您只是轻度偏执,则为一个实例)。