您的位置:首页 > 编程语言 > C#

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

2016-02-29 20:44 309 查看
使用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的初始权仅归第一个窗口所有
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: