相关疑难解决方法(0)

易失性与易失性读/写?

我找不到任何 VolatileRead/write(尝试...)的例子,但仍然:

何时应该使用volatilevs VolatileRead

AFAIK的全部目的volatile是创造围栏所以:

  • 对于READ操作,在当前操作之后进行的读/写(在其他线程上)将不会在栅栏之前传递.因此 - 我们读了最新的价值.

问题#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;在那里?他们已经有了明确保持价值的地址参数.

c# multithreading volatile .net-4.0

29
推荐指数
2
解决办法
6120
查看次数

标签 统计

.net-4.0 ×1

c# ×1

multithreading ×1

volatile ×1