C# 中线程资源访问互斥量

来源:互联网 发布:淘宝的拍照权限设置 编辑:程序博客网 时间:2024/06/05 18:27

使用mutex,进行互斥访问

示例中运行第一个窗口显示running

此时运行第二个窗口显示 空白 处于等待。若在5秒内在第一个窗口中输入,将释放资源,此时第二个窗口将显示running

using System;using System.Threading;namespace MutexDemo{    class Program    {        static void Main(string[] args)        {            const string MutexName = "Demo";            Console.WriteLine("mutex name {0}", MutexName);            using (var m = new Mutex(false, MutexName))            //开启第二个窗口时,以下方式将不会回馈m状态,以上方式可以            //using (var m = new Mutex(false, MutexName))            {                if (!m.WaitOne(TimeSpan.FromSeconds(5), false))                    Console.WriteLine("second instance is running");                else                {                    Console.WriteLine("running");                    //按键后释放资源                    Console.ReadLine();                    m.ReleaseMutex();                }            }            Console.WriteLine("main thread waiting for a key");            Console.ReadKey();        }    }}

若将

using (var m = new Mutex(false, MutexName))
改为

using (var m = new Mutex(false, MutexName))
则第一个窗口释放资源后,第二个窗口也不会取得资源;即mutex的初始权仅归第一个窗口所有

0 0
原创粉丝点击