c#中mutex是互斥鎖,位於system.threading 命名空間中。
顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。
如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒;上廁所的人先進洗手間,擁有使用權,上完廁所之後出來,把洗手間釋放,其他人才可以使用。
執行緒使用mutex.waitone()方法等待c# mutex物件被釋放,如果它等待的c# mutex物件被釋放了,它就自動擁有這個物件,直到它呼叫mutex.releasemutex()方法釋放這個物件,而在此期間,其他想要獲取這個c# mutex物件的執行緒都只有等待。
我們可以利用這個特性來控制乙個應用程式只能執行乙個例項。其他例項由於得不到這個mutex而不能執行。
**如下所示
這裡先執行乙個例項,然後再執行第二個,通過日誌可以檢視啟動過程,如下所示
2016-11-23 13:47:05 -[ warn]- can't run the environment now, because one instance is already running!
從日誌可以看出,當第二個例項想執行的時候,由於已經有乙個程序擁有了這個互斥鎖,此程序不能擁有,所以程序啟動被終止。
此外還需說明一點,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看作洗手間,上廁所的人看作執行緒 ...