我們都知道下面的代碼是用來形成臨界區的。對象參數在Monitor.Enter調用中的作用.Net
public class CommonResource
{
public object obj = new object();
public void PopularFunction()
{
lock (obj)
{
///Access variable that we want to protect form being accessed concurrently
///This forms critical section
///My question is what is role'obj' plays in forming critical section.
///How it works behind the scene.
}
///Above code can be written as
Monitor.Enter(obj);
///Access variable that we want to protect form being accessed concurrently
///This forms critical section
///My question is what is role'obj' plays in forming critical section.
///How it works behind the scene.
Monitor.Exit(obj);
}
}
我的問題是Monitor.Enter如何在'obj'的幫助下形成一個關鍵部分。如果我們需要總是傳遞一個對象,爲什麼不能明確地傳遞任何對象。肯定有這個背後的原因。有人可以解釋嗎?
感謝, 與Hemant
你的代碼不是使用lock或Monitor類的好例子。創建該類的多個實例會破壞線程安全。 'obj'應該是靜態的 – Jehof 2013-04-08 12:56:14
有一個很好的免費電子書關於線程在這裏:['Albahari'](http://www.albahari.com/threading/) – 2013-04-08 12:56:28
閱讀尼古拉斯提到的偉大資源,並注意你的'監視器'相當於'鎖定'不是很精確:http://www.albahari.com/threading/part2.aspx#_MonitorEnter_and_MonitorExit – GolfWolf 2013-04-08 12:58:18