C Monitor與執行緒同步

2022-04-29 03:30:10 字數 1263 閱讀 3909

monitor物件(c#知識點總結系列:4、c#中monitor和lock以及區別)

1.monitor.enter(object)方法是獲取鎖,monitor.exit(object)方法是釋放鎖,這就是monitor最常用的兩個方法,當然在使用過程中為了避免獲取鎖之後因為異常,致鎖無法釋放,所以需要在try{} catch(){}之後的finally{}結構體中釋放鎖(monitor.exit())。

2.monitor的常用屬性和方法:

enter(object) 在指定物件上獲取排他鎖。

exit(object) 釋放指定物件上的排他鎖。

isentered 確定當前執行緒是否保留指定物件鎖。

pulse 通知等待佇列中的執行緒鎖定物件狀態的更改。

pulseall 通知所有的等待執行緒物件狀態的更改。

tryenter(object) 試圖獲取指定物件的排他鎖。

tryenter(object, boolean) 嘗試獲取指定物件上的排他鎖,並自動設定乙個值,指示是否得到了該鎖。

wait(object) 釋放物件上的鎖並阻止當前執行緒,直到它重新獲取該鎖。

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading;

//執行緒同步與多執行緒程式中的隱患

利用monitor的enter(object) 、exit(object)實現了執行緒同步,乙個執行緒將等待前乙個執行緒執行完成後,才繼續執行

執行緒與同步

系統中的執行緒與程序 程序包含window控制代碼,檔案系統和其他核心物件等,每個程序系統都會分配乙個虛擬記憶體,每個程序最少有乙個執行緒。執行緒是執行程式必須的獨立的指令流,執行緒也有自己的堆疊 記憶體 應用程式的記憶體和堆由乙個程序中的所有執行緒共享,所引線程之間的交換非常快,但是由於他們共享所...

執行緒基礎與執行緒同步

二 執行緒同步 我們都知道,程序是運轉中的程式,是為了在cpu上實現多道程式設計而發明的乙個概念。但是程序在乙個時間只能幹一件事情,如果想要同時幹兩件或者多件事情,例如同時看兩場電影,我們自然會想到傳說中的分身術,就像孫悟空那樣可以變出多個真身。雖然我們在現實中無法分身,但程序卻可以辦到,辦法就是執...

執行緒安全與執行緒同步

執行緒安全 可重入函式 執行緒之間共享全域性資料段 靜態資料,引起非執行緒安全。執行緒安全可以通過執行緒同步對臨界資源訪問進行控制來實現。有些系統呼叫或者庫函式的實現時發生不安全現象,在多執行緒環境下就需要使用這些函式的安全版本,即可重入函式。例如 字串分割函式 普通版本 char strtok c...