Skip to main content
 首页 » 编程设计

c#之函数中的本地锁定对象变量

2024年02月04日31softidea

在试图解释别人的代码时,我偶然发现了这种锁定方法,我很困惑:

public void CloseHandle(SafeFileHandle handle) 
{ 
   var thisLock = new Object(); 
 
   lock (thisLock) 
       handle.Close(); 
} 

对我来说,这似乎是在每次调用该方法时锁定对象的新实例,因此根本不会真正“锁定”,因为多个线程永远不会锁定对象的同一实例。我在这里遗漏了什么吗?

请您参考如下方法:

你的假设是正确的,那是一个错误,并没有发生真正的锁定