我有以下锁声明:应该声明一个锁定变量是否为volatile?
private readonly object ownerLock_ = new object();
lock (ownerLock_)
{
}
我应该使用volatile关键字为我的锁变量?
private readonly volatile object ownerLock_ = new object();
在MSDN上,我看到它通常用于无锁定访问的字段,所以如果我使用锁定,我不需要使用易失性?
从MSDN:
挥发性改性剂通常被用于由 多个线程,而不使用锁定语句来串行访问访问的字段。
我们需要更多的上下文来回答这个问题。与使用锁的对象相关的锁存在哪里? – 2012-07-17 13:00:35
它当前存在的线程绝对是安全的。当您在锁定块中添加代码时,无法保证。 – 2012-07-17 13:00:55
你不应该需要锁定只读对象,因为它是只读的... – NominSim 2012-07-17 13:01:16