Ful*_*oof 3 c# events multithreading synchronization locking
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类更受欢迎,... 因为锁可以确保释放底层监视器,即使受保护的代码抛出异常 "
这句话是否意味着使用监视器的最后一个代码片段不能确保"即使受保护的代码抛出异常,也会释放底层监视器"?
为什么?
好吧,我感到困惑的是相互矛盾的断言"等价"而不是(一种用法保险,另一种用途,等价物,不等同).
粗体文本引用的情况更像是这样的:
Monitor.Enter(obj);
DoSomethingThatThrows();
Monitor.Exit(obj);
Run Code Online (Sandbox Code Playgroud)
其中,没有try-finally,抛出异常会绕过Monitor.Exit调用.
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |