Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++模型不存在时,java模型需要对单个修改顺序的硬件支持吗? java模型需要硬件支持单修改顺序,而C++模型不?_Java_C++_Memory Model - Fatal编程技术网

在C++模型不存在时,java模型需要对单个修改顺序的硬件支持吗? java模型需要硬件支持单修改顺序,而C++模型不?

在C++模型不存在时,java模型需要对单个修改顺序的硬件支持吗? java模型需要硬件支持单修改顺序,而C++模型不?,java,c++,memory-model,Java,C++,Memory Model,我写了一个有四个线程的程序 t0设置x=新。。 t1设置x=新。。 t2:读取x两次,t3读取x两次 t2和t3可以看到x的不同顺序的变化吗 在c++11中,这是一个未定义的竞赛结果 在java中,这也是一场竞赛,但对所发生的事情有限制 对于许多CPU来说,有一个单一的修改顺序规则-使用硬件强制将对x的更改中的一个更改排在所有观察者的第二位- 如果在硬件中不支持这个,T2是垃圾回收器——java是否有任何声明? < P>在没有显式同步的情况下,同步块、锁、原子变量的使用——T2和T3可以看到ja

我写了一个有四个线程的程序 t0设置x=新。。 t1设置x=新。。 t2:读取x两次,t3读取x两次 t2和t3可以看到x的不同顺序的变化吗

在c++11中,这是一个未定义的竞赛结果 在java中,这也是一场竞赛,但对所发生的事情有限制 对于许多CPU来说,有一个单一的修改顺序规则-使用硬件强制将对x的更改中的一个更改排在所有观察者的第二位-
如果在硬件中不支持这个,T2是垃圾回收器——java是否有任何声明?

< P>在没有显式同步的情况下,同步块、锁、原子变量的使用——T2和T3可以看到java和C++中不同顺序的变化。是。@user2129444是否是安全漏洞取决于具体情况。但是,程序员可以而且通常应该通过使用适当的显式同步来避免这种情况。Java有自己的独立于底层操作系统和硬件的功能。Java有自己的内存模型保证。然而,如果底层操作系统和硬件有更严格的保证,Java通常会继承这些保证。这听起来可能是一件好事,但实际上并非如此:这意味着如果你在更严格的硬件上编程,事情可能看起来运行得很好,但当你试图在保证更少的硬件上运行程序时,事情就破裂了。