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
实例...(如果您只是轻度偏执,则为一个实例)。
我有跟进这个问题 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
实例...(如果您只是轻度偏执,则为一个实例)。