关于.NET中的锁和线程安全变量的困惑

时间:2015-10-07 01:27:29

标签: c# multithreading thread-safety

在我阅读了Eric Lippert撰写的文章"Atomicity, volatility and immutability are different, part three"之后,我想出了一个问题,即使我对引用类型变量进行了锁定,但是如果cpu曾经得到它的话存储在主存储器中的变量并将变量加载到其寄存器页中,并且仅从其寄存器读取变量,因为假设volatile关键字未应用于此变量。因此,此线程无法看到对其他线程上的此变量所做的更改。

我不确定我的逻辑是否正确。从文章中可以看出,如果字段周围存在锁定,则无需将字段声明为volatile。任何人都可以向我解释,如果代码使用锁来控制对变量的访问,究竟会发生什么。

0 个答案:

没有答案