是否有必要通过多线程访问所有数据,用volatile修饰?

hel*_*.co 0 c++

对于原始人,我认为这是必要的. 即使是非原始的,例如数组,我认为这也是必要的.

没有不稳定:

int d[2];
Run Code Online (Sandbox Code Playgroud)

线程1:

while (d[1] > 0) modify(d[0]);
Run Code Online (Sandbox Code Playgroud)

线程2:

while (d[0] > 0) modify(d[1]);
Run Code Online (Sandbox Code Playgroud)

我担心编译器会在没有volatile的情况下更改我的代码.while(true)modify();

所以我在'int d [2]'之前放了volatile; 但是我觉得有点奇怪,一切都装饰着挥发性.

use*_*353 5

不,这不是挥发性的用途.易失性用于可能在程序之外更改的变量 - 例如.内存映射设备,图形内存等

这不是因为程序是多线程的 - 既不是原始类型也不是数组.