究竟是什么原因所在is_lock_free
需要一个实例(这是一个成员函数)? 为什么不类型,或静态的元函数constexpr
成员函数?
我要寻找的,为什么它是必要的实际情况。
究竟是什么原因所在is_lock_free
需要一个实例(这是一个成员函数)? 为什么不类型,或静态的元函数constexpr
成员函数?
我要寻找的,为什么它是必要的实际情况。
该标准允许一个类型为有时无锁。
部分29.4 无锁属性
原子_..._ LOCK_FREE宏表示相应原子类型的无锁特性,用符号和无符号的变体组合在一起。 性质也适用于原子模板的相应的(局部的)特化。 值为0表示该类型是从来没有无锁的。 值1表示该类型有时无锁。 的2值表示的类型总是无锁。
在C ++原子纸n2427指出背后的原因:
......该提案提供了运行时无锁的查询功能,而不是编译时常因为一个平台,随后的实现可以进行升级,无锁定的操作锁定操作,所以它是系统背后的动态库抽象这些设施普遍,我们希望留给possiblility开放。 此外,我们建议,如果没有硬件支持原子实现使用该技术。 ...
而且(如杰西好指出):
该提案提供了单个对象无锁的查询功能,而不是整个类型,以便允许不可避免的错位原子变量,而不惩罚排列原子变量的性能