C++ 为什么volatile在C++;20?
根据,在C++20中,C++ 为什么volatile在C++;20?,c++,volatile,c++20,C++,Volatile,C++20,根据,在C++20中,volatile关键字的大多数用法都是不推荐的。volatile的缺点是什么?当不使用volatile时,替代方案是什么?有一个关于为什么的好话题 简而言之,volatile被删除的许多地方没有任何可理解的含义,只是造成了混乱 演讲中的一些例子: 易失性位字段应由硬件手册和/或编译器指定 +=是单指令/原子指令吗?+怎么样 比较交换需要多少读/写操作?如果失败了怎么办 void foo(int volatile n)是什么意思?或int volatile foo() 应
volatile
关键字的大多数用法都是不推荐的。volatile
的缺点是什么?当不使用volatile时,替代方案是什么?有一个关于为什么的好话题
简而言之,volatile
被删除的许多地方没有任何可理解的含义,只是造成了混乱
演讲中的一些例子:
- 易失性位字段应由硬件手册和/或编译器指定
是单指令/原子指令吗?+=
怎么样+
- 比较交换需要多少读/写操作?如果失败了怎么办
是什么意思?或void foo(int volatile n)
int volatile foo()
- 应该
*vp代码>加载?(这在标准中更改了两次。)
volatile
不适用于线程。嗯,volatile不适合用于标记多线程访问的标量(你的意思是)。正如drdobbs文章所示,它是对象级多线程编程范例的好工具。这导致了一些编译器警告,正如我刚才注意到的那样,这些警告必须被处理,而不是像我刚才所说的那样。不推荐对volatile int(例如)使用predecrement和preincrement,但对volatile进行采样(即,将其值作为非volatile返回)不会导致编译器不推荐使用警告。单线程代码中的引用计数允许在同时执行的不同算法之间重用对象。我在一家网络公司的航班搜索引擎上工作——想象一下你所想象过的最复杂的软件应用程序。。。我当然不知道在30秒钟内,在超高速C++上运行的搜索服务器会发生什么。一切都经过特别设计,以尽可能快地运转。