首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么is_lock_free是成员函数?

为什么is_lock_free是成员函数?
EN

Stack Overflow用户
提问于 2012-05-02 11:59:04
回答 1查看 1.6K关注 0票数 14

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

我正在寻找一个实际的例子来说明为什么它是必要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-02 12:27:29

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

第29.4节无锁属性

ATOMIC_..._LOCK_FREE宏指示相应原子类型的无锁属性,并将带符号和无符号的变体组合在一起。这些属性还适用于原子模板的相应(部分)专门化。值为0表示类型永远不是无锁的。值为1表示类型有时是无锁的。值为2表示类型始终是无锁的。

C++ atomic paper n2427说明了背后的原因:

...该提案提供了运行时无锁查询函数,而不是编译时常量,因为平台的后续实现可能会使用无锁操作升级锁定操作,因此系统在动态库后面抽象此类工具是很常见的,我们希望保留这种可能性。此外,我们建议没有硬件原子支持的实现使用该技术。..。

而且(正如Jesse Good指出的):

该提议在单个对象而不是整个类型上提供无锁查询函数,以允许原子变量不可避免地未对齐,而不会影响对齐的原子变量的性能

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10407514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档