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();
        }
    }
}

以上程序编译后,请运行两个实例即两个进程。就可以明显的看出进程间的同步的实现。

转载于:https://my.oschina.net/u/1426828/blog/724281

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值