Csharp/C#教程:c# mutex互斥量的深入解析分享

互斥锁(Mutex)

互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。

互斥锁可适用于一个共享资源每次只能被一个线程访问的情况

 函数:

//创建一个处于未获取状态的互斥锁

PublicMutex();

//如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态

 PublicMutex(boolowned);

 如果要获取一个互斥锁。应调用互斥锁上的WaitOne()方法,该方法继承于Thread.WaitHandle类

它处于等到状态直至所调用互斥锁可以被获取,因此该方法将组织住主调线程直到指定的互斥锁可用,如果不需要拥有互斥锁,用ReleaseMutex方法释放,从而使互斥锁可以被另外一个线程所获取

//PublicMutex(boolowned,name,outflag);

name为互斥量的免费精选名字大全,也就是说在操作系统中只有一个命名为name的互斥量mutex,如果一个线程得到这个name的互斥锁,其他线程就无法得到这个互斥锁了,必须等待那个线程对这个线程释放

参考别人的博客的代码实验
代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading;

namespacemyConApp
{
   classTest
   {
       ///<summary>
       ///应用程序的主入口点。
       ///</summary>
       [STAThread]
       staticvoidMain(string[]args)
       {
           boolflag=false;
           System.Threading.Mutexmutex=newSystem.Threading.Mutex(true,”Test”,outflag);
           //第一个参数:true–给调用线程赋予互斥体的初始所属权
           //第一个参数:互斥体的名称
           //第三个参数:返回值,如果调用线程已被授予互斥体的初始所属权,则返回true
           if(flag)
           {
               Console.Write(“Running”);
           }
           else
           {
               Console.Write(“AnotherisRunning”);
               System.Threading.Thread.Sleep(5000);//线程挂起5秒钟
               Environment.Exit(1);//退出程序
           }
           Console.ReadLine();

       }
   }
}

 运行上述就是C#学习教程:c# mutex互斥量的深入解析分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/905295.html

(0)
上一篇 2021年10月22日
下一篇 2021年10月22日

精彩推荐