程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> lock與Monitor

lock與Monitor

編輯:.NET實例教程
在多線程開發的時候,lock和monitor是非常常用的東西。以前用的時候沒注意過區別。今天反編譯了一把,一下明白了,呵呵。
下面是lock的代碼:
lock(this)
{
...
}

它的IL代碼大致如下:
callvirt ...Monitor.Enter(object)
...
leave.s
....
callvirt ...Monitor.Exit(object)

呵呵,看到這裡就明白了,原來就是Monitor啊。繼續仔細比較了一下,又去msdn的論壇問了一下,發現上面的代碼其實就是下面的代碼:
try
{
Monitor.Exter(this);
...
}
finally
{
Monitor.Exit(this);
}

原來,lock就是放在了try_finally裡面的monitor啊。這樣看來,如果只是簡單的使用monitor,還是直接lock比較好,這樣一來代碼簡潔,二來可以避免忘記調用exit,或者因為出了異常而沒有調用exit的情況發生。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved