C#锁定对象或引用?你怎么回答这个?

ckv*_*ckv 0 c# multithreading

让我们说我们想要实现线程同步,我们使用锁定.但是,如果问的问题是锁定对象或引用,我们如何回答这个问题?

private static readonly object doSomethingLock = new object();
public static void DoSomething (SomeObject o) 
{
   lock(doSomethingLock) 
   {
       o.Update();
       // etc....
   }
}
Run Code Online (Sandbox Code Playgroud)

adv*_*v12 5

锁在对象上.您的代码与此代码等效:

private static readonly object doSomethingLock = new object();
public static void DoSomething (SomeObject o) 
{
   var sameObject = doSomethingLock;
   lock(sameObject) 
   {
       o.Update();
       // etc....
   }
}
Run Code Online (Sandbox Code Playgroud)