using System; using System.Threading; using System.Threading.Tasks; namespace InterProcessSynchronization { class InterProcessSync { static void Main(string[] args) { string MutexName = "InterProcessSyncName"; Mutex SyncNamed; //聲明一個已命名的互斥對象 try { SyncNamed = Mutex.OpenExisting(MutexName); //若是此命名互斥對象已存在則請求打開 } catch (WaitHandleCannotBeOpenedException) { SyncNamed = new Mutex(false, MutexName); //若是初次運行沒有已命名的互斥對象則建立一個 } Task MulTesk = new Task ( () => //多任務並行計算中的匿名方法,用委託也能夠 { for (; ; ) //爲了效果明顯而設計 { Console.WriteLine("當前進程等待獲取互斥訪問權......"); SyncNamed.WaitOne(); Console.WriteLine("獲取互斥訪問權,訪問資源完畢,按回車釋放互斥資料訪問權."); Console.ReadLine(); SyncNamed.ReleaseMutex(); Console.WriteLine("已釋放互斥訪問權。"); } } ); MulTesk.Start(); MulTesk.Wait(); } } }
以上程序編譯後,請運行兩個實例即兩個進程。就能夠明顯的看出進程間的同步的實現。spa