一、多线程同步
何为线程同步,其实就是数据串行操作,当前当前的资源在没有操作完毕之前,不允许其他的线程对同一资源进行操作。即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,互斥量就是其中一种。
在C#中使用互斥量 Mutex即可进行线程同步。
using System; using System.Threading;
class MutexSample
{
private static Mutex mutex = null; //设为Static成员,是为了在整个程序生命周期内持有Mutex
static void Main()
{
bool firstInstance;
mutex = new Mutex(true, @"Global\MutexSampleApp", out firstInstance);
try
{
if (!firstInstance)
{
Console.WriteLine ("已有实例运行,输入回车退出……");
Console.ReadLine();
return;
}
else
{
Console.WriteLine ("我们是第一个实例!");
for (int i=60; i > 0; --i)
{
Console.WriteLine (i);
Thread.Sleep(1000);
}
}
}
finally
{
//只有第一个实例获得控制权,因此只有在这种情况下才需要ReleaseMutex,否则会引发异常。
if (firstInstance)
{
mutex.ReleaseMutex();
}
mutex.Close();
mutex = null;
}
}
}