我找不到任何 VolatileRead/write(尝试...)的例子,但仍然:
我何时应该使用volatilevs VolatileRead?
AFAIK的全部目的volatile是创造半围栏所以:
问题#1
那我为什么需要volatileRead?似乎volatile已经做好了工作.
另外 - 在C#中,所有写入都是易失性的(与Java中不同),无论您是写入volatile还是非易失性字段 - 所以我问:为什么我需要 volatileWrite?
问题2
这是实施VolatileRead:
[MethodImpl(MethodImplOptions.NoInlining)]
public static int VolatileRead(ref int address)
{
int num = address;
MemoryBarrier();
return num;
}
Run Code Online (Sandbox Code Playgroud)
为什么这条线路int num = address;在那里?他们已经有了明确保持价值的地址参数.