Che*_*tah 2 c# multithreading synchronization locking
我看到了很多:
object lockObj;
List<string> myStrs;
// ...
lock(lockObj)
{
myStrs.Add("hello world");
}
Run Code Online (Sandbox Code Playgroud)
为什么要有单独的对象?当然你可以这样做:
List<string> myStrs;
// ...
lock(myStrs)
{
myStrs.Add("hello world");
}
Run Code Online (Sandbox Code Playgroud)
仅在myStrs
公共时才直接锁定列表是一个问题,因此也可以被其他调用者锁定,从而导致可能的死锁.
如果它是一个私人成员,那么应该没有问题,但object
在任何情况下锁定一个单独的是一个好习惯.
有关更详细的答案,请参阅此类似问题: 为什么锁定(此){...}不好?