互斥鎖(mutex)
互斥鎖是乙個互斥的同步物件,意味著同一時間有且僅有乙個執行緒可以獲取它。
互斥鎖可適用於乙個共享資源每次只能被乙個執行緒訪問的情況
函式:
//建立乙個處於未獲取狀態的互斥鎖
public mutex();
//如果owned為true,互斥鎖的初始狀態就是被主線程所獲取,否則處於未獲取狀態
public mutex(bool owned);
如果要獲取乙個互斥鎖。應呼叫互斥鎖上的waitone()方法,該方法繼承於thread.waithandle類
它處於等到狀態直至所呼叫互斥鎖可以被獲取,因此該方法將組織住主調執行緒直到指定的互斥鎖可用,如果不需要擁有互斥鎖,用releasemutex方法釋放,從而使互斥鎖可以被另外乙個執行緒所獲取
//public mutex(bool owned,name,out flag);
name為互斥量的名字,也就是說在作業系統中只有乙個命名為name的互斥量mutex,如果乙個執行緒得到這個name的互斥鎖,其他執行緒就無法得到這個互斥鎖了,必須等待那個執行緒對這個執行緒釋放
參考別人的部落格的**實驗
複製** **如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading;
namespace myconapp
else
console.readline();}}
} 執行以上**生成的應用程式第乙個例項,會得到結果
running
保持第乙個執行狀態,執行第二個例項,得到結果
anotwww.cppcns.comher is running
以上**中建立了乙個mutex,從其引數的解釋中得知,第乙個呼叫執行緒將得到互斥體的初始所屬權,如果不釋放的話,其他的執行緒得不到互斥體所有權
1.執行兩個工程,同時將以上**放入工程中,第乙個工程執行,得到結果
running
保持第乙個執行狀態,執行第二個工程,得到結果
another is runniwww.cppcns.comng
2.將乙個工程中的system.threading.mutex mutex = new system.threading.mutex(true, "test", out flag);改為
system.threading.mutex mutex = new system.threading.mutex(true, "test1", out flag);
然後第乙個工程執行,得到結果
running
保持第乙個執行狀態,執行第二個工程,得到結果
running
則說明在系統中,mutex的name是在系統中是唯一的。
本文標題: c# mutex互斥量的深入解析
本文位址: /ruanjian/csharp/104412.html
互斥體CMutex的使用
分類 2.4 執行緒 圖形學 2010 07 29 14 31 4512人閱讀收藏 舉報 attributes mfcsecurity null thread windows 互斥體是cmutex類的物件,也只允許乙個執行緒占有某個共享資源,以保護獨佔式共享資源。因此,互斥體的使用方法與臨界段的使用...
互斥體CMutex的使用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!互斥體是cmutex類的物件,也只允許乙個執行緒占有某個共享資源,以保護獨佔式共享資源。因此,互斥體的使用方法與臨界段的使用方法極為相似,所不同的是臨界段只能在同乙個程序中對執行緒進行同步,而互斥體可以用在不同的程序中進行執行緒同步控制。cmute...
c 對於mutex互斥量的深入理解
互斥鎖 mutex 互斥鎖是乙個互斥的同步物件,意味著同一時間有且僅有乙個執行緒可以獲取它。互斥鎖可適用於乙個共享資源每次只能被乙個執行緒訪問的情況 函式 建立乙個處於未獲取狀態的互斥鎖 public mutex 如果owned為true,互斥鎖的初始狀態就是被主線程所獲取,否則處於未獲取狀態 pu...