msdn文章Thread Synchronization(C#编程指南)指定:
lock (x)
{
DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
相当于:
System.Object obj = (System.Object)x;
System.Threading.Monitor.Enter(obj);
try
{
DoSomething();
}
finally
{
System.Threading.Monitor.Exit(obj);
}
Run Code Online (Sandbox Code Playgroud)
然后那个:
"使用lock关键字通常比直接使用Monitor类更受欢迎,... 因为锁可以确保释放底层监视器,即使受保护的代码抛出异常 "
这句话是否意味着使用监视器的最后一个代码片段不能确保"即使受保护的代码抛出异常,也会释放底层监视器"?
为什么?
好吧,我感到困惑的是相互矛盾的断言"等价"而不是(一种用法保险,另一种用途,等价物,不等同).