我在這裏看着的StackOverflow和MSDN,不能相信我不能在互聯網上找不到這個問題。
比方說,我有一個私人成員的類,我想以幾種公共方法訪問。這些公共方法將被不同的線程調用,因此需要同步。
public class MyClass
{
private Object SomeSharedData = new Object();
public void MethodA()
{
lock(SomeSharedData) {
// do something
MethodB();
}
}
public void MethodB()
{
lock(SomeSharedData) {
// do something
}
}
}
注意,治法和方法b可以通過這個類的用戶調用,但治法也叫方法b,從而導致嵌套鎖定狀態。
這是保證安全嗎?換句話說,.NET是否通過引用計數鎖來處理這個問題,這樣當我彈出這些方法時,鎖就會減少?或者.NET在幕後執行一些魔法,它只是忽略源自同一線程的對象上的所有後續鎖?
FYI鎖就是Monitor.Enter Monitor.Exit – 2010-09-10 19:00:39
@Sergey感謝了語法糖,我覺得其實我在我的C#書中讀過一次,但找不到它。 – Dave 2010-09-10 19:11:48
@ M4N ack,我沒有檢查「re-entrant」:) – Dave 2010-09-10 19:12:18