is_lock_free需要实例(它是一个成员函数)的原因是什么?为什么不是类型的元函数或静态constexpr成员函数?
我正在寻找一个实际的例子来说明为什么它是必要的。
发布于 2012-05-02 12:27:29
该标准允许一个类型有时是无锁的。
第29.4节无锁属性
ATOMIC_..._LOCK_FREE宏指示相应原子类型的无锁属性,并将带符号和无符号的变体组合在一起。这些属性还适用于原子模板的相应(部分)专门化。值为0表示类型永远不是无锁的。值为1表示类型有时是无锁的。值为2表示类型始终是无锁的。
C++ atomic paper n2427说明了背后的原因:
...该提案提供了运行时无锁查询函数,而不是编译时常量,因为平台的后续实现可能会使用无锁操作升级锁定操作,因此系统在动态库后面抽象此类工具是很常见的,我们希望保留这种可能性。此外,我们建议没有硬件原子支持的实现使用该技术。..。
而且(正如Jesse Good指出的):
该提议在单个对象而不是整个类型上提供无锁查询函数,以允许原子变量不可避免地未对齐,而不会影响对齐的原子变量的性能
https://stackoverflow.com/questions/10407514
复制相似问题