Mutex对象

Posted sportdog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mutex对象相关的知识,希望对你有一定的参考价值。

案例一

举一个例子,设计模式中的单例模式,记得当时做机房收费系统的时候就用的单例模式防止一个界面被实例多次,而Mutex对象能达到同样的效果,防止界面被实例化多次,起到控制线程的作用。

案例二

如果大家还是不太理解,举一个更简单的例子就是把Mutex看做一个出租车,乘客看做线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只能等他下车以后才可以上车

 

static void Main(string[] args)
        {
            bool flag = false;
            Mutex mutex = new Mutex(true,"MyMutex",out flag);
            Console.WriteLine("Flag value is {0}", flag.ToString());
            if (flag)
            {
                Console.WriteLine("Start Running");
            }
            else
            {
                Console.WriteLine("The Other Thread is running");
                Thread.Sleep(TimeSpan.FromSeconds(5));
                Environment.Exit(-1);
            }
            Console.ReadLine();
           

        }

 

打开程序第一次时,显示 Start Runing .

不要关闭程序,再打开程序一次。

程序显示 The Other Thread is running

以上是关于Mutex对象的主要内容,如果未能解决你的问题,请参考以下文章

std::mutex 作为类成员,并将类对象存储到容器中

Mutex对象

golang中的Mutex和RWMutex

Windows线程同步

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象