首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么C++20中不推荐易失性?

为什么C++20中不推荐易失性?
EN

Stack Overflow用户
提问于 2019-12-07 07:10:56
回答 1查看 9.2K关注 0票数 45

根据优先选择的说法,volatile关键字的大多数用法在C++20中都是不推荐的。volatile的缺点是什么?不使用volatile的替代解决方案是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-07 12:04:27

C++委员会语言演变主席很好地讨论了为什么。

简单的总结一下,volatile被删除的地方在标准中没有任何明确的含义,只是造成了混乱。

激发(模棱两可)的例子

  • 易失性位字段应由硬件手册和/或编译器指定。
  • +=是一个单一的原子指令吗?++怎么样?
  • compare_exchange需要多少读/写?如果它失败了呢?
  • void foo(int volatile n)是什么意思?或int volatile foo()
  • *vp;应该做一个负载吗?(在标准中,这已经改变了两次。)

穿线

历史上,人们使用volatile来实现C和C++中的线程安全。在C++11中,添加了在线程之间创建同步和共享状态的非UB方式。我推荐回到基本原则:并发性作为一个很好的介绍。

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

https://stackoverflow.com/questions/59223814

复制
相关文章

相似问题

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