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

相关文章
相关标签/搜索