您的位置:首页 > 职场人生

8月《程序员》对lock的评析有错?

2005-08-30 20:56 155 查看
待着没事看了一会8月的《程》,发现P86对lock的评析似乎有错:

崔轶的评析认为lock块中发生异常,流程跳转时不会释放锁。
即lock (x) ... =
System.Threading.Monitor.Enter(x);
...
System.Threading.Monitor.Exit(x);

和我的印象不符阿,记得可以释放锁吧?

看了一下MSDN,果然如此,可以释放锁:
(ms-help://MS.MSDNQTR.2003FEB.2052/csspec/html/vclrfcsharpspec_8_12.htm)
MSDN中评述如下所示:

下列形式的
lock
语句

lock (x) [code]...

(其中
x
是一个引用类型的表达式)完全等效于

System.Threading.Monitor.Enter(x);
try {
[code]...

}
finally {
System.Threading.Monitor.Exit(x);
}[/code]
不同的只是:实际执行中
x
只计算一次。

呵呵,原来已经放到finally里边了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: