互斥鎖(Mutex)
互斥鎖是一個互斥的同步對象,意味著同一時間有且僅有一個線程可以獲取它。
互斥鎖可適用於一個共享資源每次只能被一個線程訪問的情況
當兩個或更多線程需要同時訪問一個共享資源時,系統需要使用同步機制來確保一次只有一個線程使用該資源。
Mutex是同步基元,它只向一個線程授予對共享資源的獨占訪問權。如果一個線程獲取了互斥體,則要獲取該互斥體的第二個線程將被掛起,直到第一個線程釋放該互斥體。
按我的理解就是說:很多人排隊到一台ATM取款、必須要等到第一個人取完以後、第二個人才能使用、這樣依次類推。
獻上使用代碼:
public void AutomaticSubmitProcess(int MaxQueueStep,string System) { bool bCreateNew = false; Mutex mut = new Mutex(true, "name", out bCreateNew); //使用一個指示調用線程是否應擁有互斥體的初始所屬權的布爾值、 //一個作為互斥體名稱的字符串, //以及一個在方法返回時指示調用線程是否被授予互斥體的初始所屬權的布爾值來初始化 Mutex 類的新實例。 if (bCreateNew == false) { // 說明有人正在ATM取錢、請排隊。 Console.WriteLine("Another Instance is running!"); return; } //現在可以在ATM取錢了、 DataSet ds = alc.GetProcessOperationQueue(MaxQueueStep, "UBI"); if (ds.Tables[0].Rows.Count > 0) { //涉及項目,就不貼出數據修改了、諒解 } mut.ReleaseMutex();//釋放 Mutex 一次。 mut.Close(); mut.Dispose(); }
第一次使用、僅發表我的理解、如果說錯了、希望提出修改、