c# Mutex 互斥锁

前言

互斥锁(Mutex)

互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。

互斥锁可适用于一个共享资源每次只能被一个线程访问的情况。

正文

代码:

static void Main(string[] args)
{
	const string MutexName = "CsharpThreadingCookbook";
	using (var m = new Mutex(false, MutexName))
	{
		if (!m.WaitOne(TimeSpan.FromSeconds(5), false))
		{
			Console.WriteLine("second instance is running");
			Console.ReadLine();
		}
		else
		{
			Console.WriteLine("Runing");
			Console.ReadLine();
			m.ReleaseMutex();
		}
	}
}

这里m.WaitOne(TimeSpan.FromSeconds(5), false) 会请求加锁,如果获取后,其他线程就无法WaitOne,陷入一个等待状态。

m.ReleaseMutex() 是在把相应的操作执行完毕之后就可以释放锁,那么其他线程就可以继续自己的操作。

Mutex 还挺关键的一个东西,或许补齐其原理,并补充更多的例子。

posted @ 2020-07-02 15:26  敖毛毛  阅读(450)  评论(0编辑  收藏  举报