我经常看到这一点:
object lockObj;
List<string> myStrs;
// ...
lock(lockObj)
{
myStrs.Add("hello world");
}
为什么要有单独的对象?当然,您可以这样做:
List<string> myStrs;
// ...
lock(myStrs)
{
myStrs.Add("hello world");
}
最佳答案
仅当myStrs
是公共(public)的时才直接锁定在列表上是一个问题,因此也可以被其他调用者锁定,从而可能导致死锁。
如果它是私有(private)成员,那么应该没有问题,但是在任何情况下,锁定单独的object
都是一个好习惯。
请参阅以下类似问题,以获取更详细的答案:
Why is lock(this) {...} bad?
关于c# - 使用单独的对象进行同步,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14070431/