在.NET时代线程间同步进程间同步都不再是以前那种长篇大论了也不用自己写同步原语了,这从一定程序上讲解放了程序员,让程序员考虑更多的是流程和计算上。废话少说我们开初我们的进程间同步吧。
其实在.NET中只需要System.Threading下的Mutex类就可以很简单的实现进程间的同步问题。我们用多任务并行计算的方式来开始我们的进程间的同步问题。代码如下:
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();
}
}
}
以上程序编译后,请运行两个实例即两个进程。就可以明显的看出进程间的同步的实现。