Tag: memory barrier

内存障碍是否可以保证C#的新读取?

如果我们在C#中有以下代码: int a = 0; int b = 0; void A() // runs in thread A { a = 1; Thread.MemoryBarrier(); Console.WriteLine(b); } void B() // runs in thread B { b = 1; Thread.MemoryBarrier(); Console.WriteLine(a); } MemoryBarriers确保写入指令在读取之前发生。 但是,是否可以保证在另一个线程上读取一个线程的写入? 换句话说,是否保证至少有一个线程打印1或两个线程都可以打印0 ? 我知道已经存在几个与C#中的“ MemoryBarrier ”和MemoryBarrier相关的问题,就像这样和这个 。 但是,它们中的大多数都处理写入释放和读取 – 获取模式。 在这个问题中发布的代码,非常特定于在保持指令保持有序的情况下是否保证通过读取来查看写入。