【发布时间】:2016-07-13 05:48:27
【问题描述】:
我可以像下面这样定义 lockObject:
private readonly object lockObject;
或者应该像这样玷污:
private object lockObject;
【问题讨论】:
-
如果您在初始化后永远不需要写入字段,则将其定义为只读。锁定对象是不应该改变的一个很好的例子。
-
@GlorinOakenfoot 谢谢,但是.net 框架是否需要写入锁定对象?
-
但是你需要创建对象。通常你会写:
private readonly object lockObject = new object(); -
@Fred 否。
lock指令(通常是“实现”lock的Monitor.Enter/Monitor.Exit)在连接到object -
这里解释说,在 Microsoft .NET 中,
lock在锁定对象前面的一些“隐藏”内存中写入:stackoverflow.com/questions/30690790/clr-sync-block-address
标签: c# multithreading thread-safety