根据优先选择的说法,volatile关键字的大多数用法在C++20中都是不推荐的。volatile的缺点是什么?不使用volatile的替代解决方案是什么?
发布于 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方式。我推荐回到基本原则:并发性作为一个很好的介绍。
https://stackoverflow.com/questions/59223814
复制相似问题