C/C++ 和 JAVA 对volatile的功能是不一样的是么
来源:12-4 volatile

慕斯6088333
2022-07-08
这边C和C++对于volatile来说, 只有视频中所诉的确保相关变量的代码块不会被优化/重排序, Java是有当变量发生变化的时候立即从CPU 的cache 中flush到memeory 中的是这样吧。 貌似C 不同的编译器(如MSVC)所赋予volatile的功能也不一致, 好像C++不同版本对于volatile也是不一样的 ?基本上什么情况才会用到volatile呢。似乎听下来,C中的volatile 好像没什么用,我记得上本科的时候 学嵌入式I/O端口的时候才涉及到volatile。
写回答
1回答
-
C和CPP确实依赖于编译器的实现,从标准的定义上,确实只有嵌入式I/O端口的时候才涉及到volatile。如果所以看具体运行环境的文档更可靠一些。Java的volatile语义上更加完善,可以确保禁止重排序和内存的可见性,这点在C语言当中标准上没有这么定义。使用的时候要注意。
012022-07-09
相似问题