C 中Mutex的用法

2021-10-03 06:47:56 字數 849 閱讀 7420

c#中mutex是互斥鎖,位於system.threading 命名空間中。

顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。

如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒;上廁所的人先進洗手間,擁有使用權,上完廁所之後出來,把洗手間釋放,其他人才可以使用。

執行緒使用mutex.waitone()方法等待c# mutex物件被釋放,如果它等待的c# mutex物件被釋放了,它就自動擁有這個物件,直到它呼叫mutex.releasemutex()方法釋放這個物件,而在此期間,其他想要獲取這個c# mutex物件的執行緒都只有等待。

我們可以利用這個特性來控制乙個應用程式只能執行乙個例項。其他例項由於得不到這個mutex而不能執行。

**如下所示

private static mutex s_mutex = new mutex();                     //互斥鎖

public virtual bool raisesource(sourceparameter source, int mpluse = 1)

}catch

system.threading.thread.sleep(retry_delay_time);

icount++;

} while (icount < retry_numbers);

return false;

}finally

}

此外還需說明一點,mutex的name是在系統中是唯一的,也就是上述**中的name,系統依靠這個name屬性來標識唯一的mutex。

C 中Mutex的用法

c 中mutex是互斥鎖,位於system.threading 命名空間中。顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒...

C 中Mutex的用法

c 中mutex是互斥鎖,位於system.threading 命名空間中。顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒...

C 互斥鎖Mutex類的用法

c 中mutex是互斥鎖,位於system.threading命名空間中。顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒 ...