MSDN的解釋為如下
命名空間: System.Threading
當兩個或多個線程需要同時通路共享的資源時,系統将需要使用同步機制來確定一次隻有一個線程使用的資源。 Mutex 是一個同步基元,授予于隻有一個線程對共享資源的獨占通路權限。 如果一個線程擷取互斥體,第二個想要擷取該互斥體挂起線程,直到第一個線程釋放此斥鎖。
static void Main(string[] args)
{
bool Flag = true;//布爾變量傳入,未發現此值對結果存在任何影響
Mutex mu = new Mutex(true, "Mutex", out Flag);//初始化函數
//Initializes a new instance of the Mutex class with a Boolean value that indicates whether
//the calling thread should have initial ownership of the mutex, a string that is the name
//of the mutex, and a Boolean value that, when the method returns, indicates whether the
//calling thread was granted initial ownership of the mutex.
//mutex僅允許存在一個執行個體運作 對flag進行判斷
if (Flag)
{
Console.WriteLine("FIrst");
}
else
{
Console.WriteLine("has another one");
}
Console.Read();
}
上面的程式隻允許運作一次 再次運作會顯示已經存在執行個體
下面的代碼則是使用等待釋放互斥變量
static void Main(string[] args)
{
bool flag = false;
using (var m = new Mutex(false, "t1",out flag))
{
//調用WaitOne方法,延遲15秒,如果15秒已存在的執行個體内釋放了,則會進入此方法
if (!m.WaitOne(TimeSpan.FromSeconds(15), false))
{
Console.WriteLine("exit has another one");
Console.Read();
}
else
{
Console.WriteLine("first");
Console.Read();
m.ReleaseMutex();//釋放一次的方法
}
}
}