我经常看到这一点:

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/

10-10 21:41