Mutex小应用

System.Threading.Mutex :同步基元,它只向一个线程授予对共享资源的独占访问权

实现原理: 在程序启动时,请求一个互斥体,如果能获取对指定互斥的访问权,就继续运行程序,否则就退出程序

PS:如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。

eg:

  1.  static class Program
  2.     {
  3.         /// <summary>
  4.         /// 应用程序的主入口点。
  5.         /// </summary>
  6.         [STAThread]
  7.         static void Main()
  8.         {
  9.             //Application.EnableVisualStyles();
  10.             //Application.SetCompatibleTextRenderingDefault(false);
  11.             //Application.Run(new Form1());
  12.             bool bCreatedNew=false;
  13.             //第一个参数:true--给调用线程赋予互斥体的初始所属权
  14.             //第一个参数:互斥体的名称
  15.             //第三个参数:返回值,如果调用线程已被授予互斥体的初始所属权,则返回true
  16.             Mutex mutex=new Mutex(true,"MutexDemo",out bCreatedNew);
  17.             if(!bCreatedNew)
  18.             {
  19.                 MessageBox.Show("已经有一个实例在运行","提示");
  20.               //  mutex.ReleaseMutex();//释放
  21.                 return;
  22.             }
  23.             try
  24.             {
  25.                 Application.Run(new Form1());
  26.             }
  27.             catch
  28.             {
  29.             
  30.             }
  31.         }      
  32.     }
  33. 此外,类型功能的还有lock,monitor(锁定)
    1. //lock一般用法 
    2.  lock (this)
    3.             {
    4.                 Console.WriteLine("lock()");
    5.                 Thread.Sleep(50);
    6.             }
    7. //monitor一般用法
    8.   Monitor.Enter(this);
    9.   Console.WriteLine("monitor");
    10.   Thread.Sleep(50);
    11.   Monitor.Exit(this);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值