我是靠谱客的博主 无辜钢铁侠,最近开发中收集的这篇文章主要介绍多线程编程学习系列之---Mutex类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

代码

static void Main()
{
	//定义一个互斥量
   const string MutextName = "CSharpThreadingCookbook";
   using (var m = new Mutex(false, MutextName))
   {
       if (!m.WaitOne(TimeSpan.FromSeconds(5), false))
       {
           Console.WriteLine("Second instance is running");
       }
       else
       {
           Console.WriteLine("Running");
           Console.ReadLine();
           m.ReleaseMutex();
       }
   }
   //此代码只为了方便截图,实际演示无用
   Console.ReadKey();
}

运行第一个
在这里插入图片描述
在第一个中按下任意键,5秒内运行第二个
在这里插入图片描述
原理
程序启动定义了一个互斥量,设置initialOwner为false,意味着如果互斥量已经被创建则,允许程序获取该互斥量,如果没有获取到互斥量,则显示running,等待直到按下了任何键然后释放变量。
如果再允许同一个程序,则会在5秒内尝试获取互斥量,如果此时在第一个程序按下了任何键,第二个程序则会开始执行。然而,如果保持等待了5秒,第二个程序将无法获取到该互斥量。

注意:
互斥量是全局的操作系统对象,请务必正确关闭互斥量,最好是using代码块来包裹互斥量对象。

该方式可用于在不同程序中同步线程,可被推广到大量的使用场景。

最后

以上就是无辜钢铁侠为你收集整理的多线程编程学习系列之---Mutex类的全部内容,希望文章能够帮你解决多线程编程学习系列之---Mutex类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部