任何人都可以在C#中对volatile关键字提供一个很好的解释吗?它解决了哪些问题,哪些问题没有解决?在哪些情况下它会节省我使用锁定?
我一直在阅读,以Full fences防止任何类型的指令重新排序或缓存围栏(通过memoryBarrier)
然后我读到了volatile 哪些会产生"半围栏":
volatile关键字指示编译器在每次从该字段读取时生成一个获取栅栏,并在每次写入该字段时生成一个释放栅栏.
acquire-fence
获取栅栏可防止其他读/写在栅栏前移动;
release-fence
释放栅栏可防止在栅栏后移动其他读/写.
有人可以用简单的英语向我解释这两句话吗?
(围栏在哪里?)
在这里得到一些答案后 - 我已经制作了一幅可以帮助每个人的图画 - 我想.