C#一種簡單而有效的進程間同步

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

相關文章
相關標籤/搜索