相关疑难解决方法(0)

具有释放/获取语义的volatile

从Java 5开始,volatile关键字具有释放/获取语义,以使副作用对其他线程可见(包括对非易失性变量的赋值!).拿这两个变量,例如:

int i;
volatile int v;
Run Code Online (Sandbox Code Playgroud)

请注意,这i是一个常规的非易失性变量.想象一下线程1执行以下语句:

i = 42;
v = 0;
Run Code Online (Sandbox Code Playgroud)

在稍后的某个时间点,线程2执行以下语句:

int some_local_variable = v;
print(i);
Run Code Online (Sandbox Code Playgroud)

根据Java存储器模型,v线程1中的写入以及线程2中的读取v确保线程2看到i在线程1中执行的写入,因此打印值42.

我的问题是:volatile在C#中是否有相同的发布/获取语义?

c# java volatile memory-model java-memory-model

6
推荐指数
2
解决办法
929
查看次数

标签 统计

c# ×1

java ×1

java-memory-model ×1

memory-model ×1

volatile ×1