Advertisement

volatile keyword in C++ vs Java differences

阅读量:

volatile

"volatile"这一英文词汇所表达的核心含义为:具有易变性与不稳定性特征的事物。

Java volatile

在Java语言中,存在一个名为volatile的关键字,其主要功能如下:

保障内存可见性:对变量的读写操作具有全局有序性,从而确保当前线程所获取的值是内存中最新存储的数据,而非当前线程内部缓存中的旧值。然而,volatile关键字无法确保线程在读写变量时的相对顺序,因此其适用范围较为有限。

防止指令重排序(遵循happens-before原则):指令重排序是JVM为提升程序执行效率而采取的一种优化手段,在不改变单线程运行结果的前提下调整指令执行顺序。需注意的是,该优化仅适用于单线程环境,在多线程场景下可能会导致执行结果发生偏差。

需要明确的是,Java中的有序性包含以下两个方面:

  • 在当前线程中,所有在读写操作之前完成的修改操作所对应的值应当对当前操作保持可见。
  • 在进行指令优化时,必须保证对volatile变量的访问语句不会被调整至其后或之前执行。

C++ volatile关键字解析

volatile 修饰符向编译器提供了一个提示,表明某个对象的值可能会以语言规范未明确说明的方式发生变化,因此需要避免进行激进的优化操作。

C++ 中的 volatile 具备以下三

全部评论 (0)

还没有任何评论哟~