c mutex互斥量的深入解析

2022-09-26 08:54:10 字數 1505 閱讀 7072

互斥鎖(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...