相关疑难解决方法(0)

为什么锁可以确保底层监视器被释放并且监视器的直接使用不会?

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类更受欢迎,... 因为锁可以确保释放底层监视器,即使受保护的代码抛出异常 "

这句话是否意味着使用监视器的最后一个代码片段不能确保"即使受保护的代码抛出异常,也会释放底层监视器"?
为什么?

好吧,我感到困惑的是相互矛盾的断言"等价"而不是(一种用法保险,另一种用途,等价物,不等同).

c# events multithreading synchronization locking

3
推荐指数
1
解决办法
150
查看次数

标签 统计

c# ×1

events ×1

locking ×1

multithreading ×1

synchronization ×1