为什么is_lock_free一个成员函数?(Why is is_lock_free a membe

2019-06-24 02:21发布

究竟是什么原因所在is_lock_free需要一个实例(这是一个成员函数)? 为什么不类型,或静态的元函数constexpr成员函数?

我要寻找的,为什么它是必要的实际情况。

Answer 1:

该标准允许一个类型为有时无锁。

部分29.4 无锁属性

原子_..._ LOCK_FREE宏表示相应原子类型的无锁特性,用符号和无符号的变体组合在一起。 性质也适用于原子模板的相应的(局部的)特化。 值为0表示该类型是从来没有无锁的。 值1表示该类型有时无锁。 的2值表示的类型总是无锁。

在C ++原子纸n2427指出背后的原因:

......该提案提供了运行时无锁的查询功能,而不是编译时常因为一个平台,随后的实现可以进行升级,无锁定的操作锁定操作,所以它是系统背后的动态库抽象这些设施普遍,我们希望留给possiblility开放。 此外,我们建议,如果没有硬件支持原子实现使用该技术。 ...

而且(如杰西好指出):

该提案提供了单个对象无锁的查询功能,而不是整个类型,以便允许不可避免的错位原子变量,而不惩罚排列原子变量的性能



文章来源: Why is is_lock_free a member function?