概述
代码
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类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复