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回答

bennyhuo

2022-07-09

C和CPP确实依赖于编译器的实现,从标准的定义上,确实只有嵌入式I/O端口的时候才涉及到volatile。如果所以看具体运行环境的文档更可靠一些。Java的volatile语义上更加完善,可以确保禁止重排序和内存的可见性,这点在C语言当中标准上没有这么定义。使用的时候要注意。

0
1
慕斯6088333
非常感谢!
2022-07-09
共1条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程