gpt4 book ai didi

c++ - 为什么 C++20 中不推荐使用 volatile?

转载 作者:行者123 更新时间:2023-12-02 17:06:22 24 4
gpt4 key购买 nike

根据cppreference ,大多数 volatile 关键字的使用在 C++20 中将被弃用。 volatile 有什么缺点?不使用 volatile 时的替代解决方案是什么?

最佳答案

C++ committee language evolution chair 有一个很好的演讲为什么。

简单总结一下,被删除的地方在标准中没有任何明确定义的含义,只会引起困惑。

<小时/>

激励(模糊)示例

  • volatile 位字段应由您的硬件手册和/或编译器指定。
  • += 是单个/原子指令吗? ++ 怎么样?
  • compare_exchange 需要多少次读/写?如果失败怎么办?
  • void foo(int volatile n) 是什么意思?或int volatile foo()
  • *vp; 应该加载吗? (这在标准中已更改两次。)
<小时/>

线程

历史上,人们在 C 和 C++ 中使用 volatile 来实现线程安全。在 C++11 中,添加了在线程之间创建同步和共享状态的非 UB 方法。我推荐Back to Basics: Concurrency作为一个很好的介绍。

关于c++ - 为什么 C++20 中不推荐使用 volatile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59223814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com