MSDN文章Thread Synchronization (C# Programming Guide)指定:
lock (x)
{
DoSomething();
}
等价于:
System.Object obj = (System.Object)x;
System.Threading.Monitor.Enter(obj);
try
{
DoSomething();
}
finally
{
System.Threading.Monitor.Exit(obj);
}
然后是这个:
“通常使用lock关键字优于直接使用Monitor类,因为lock确保即使受保护的代码引发异常,底层监视器也会被释放。”
这句话的意思是,最后一个代码片段使用监视器时,“即使受保护的代码引发异常,底层监视器也不会被释放”吗?
为什么呢?
好吧,我对这两个相互矛盾的断言“等效”和“不等效”感到困惑(一个用法可保证,另一个等效却不能)。