亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中Mutex對象用法分析

2020-01-24 01:07:36
字體:
來源:轉載
供稿:網友

本文實例講述了C#中Mutex對象用法。分享給大家供大家參考,具體如下:

C#語言有很多值得學習的地方,這里我們就來介紹C# Mutex對象,包括介紹控制好多個線程相互之間的聯系等方面。

如何控制好多個線程相互之間的聯系,不產生沖突和重復,這需要用到互斥對象,即:System.Threading 命名空間中的 Mutex 類。

我們可以把Mutex看作一個出租車,乘客看作線程。乘客首先等車,然后上車,最后下車。當一個乘客在車上時,其他乘客就只有等他下車以后才可以上車。而線程與C# Mutex對象的關系也正是如此,線程使用Mutex.WaitOne()方法等待C# Mutex對象被釋放,如果它等待的C# Mutex對象被釋放了,它就自動擁有這個對象,直到它調用Mutex.ReleaseMutex()方法釋放這個對象,而在此期間,其他想要獲取這個C# Mutex對象的線程都只有等待。

下面這個例子使用了C# Mutex對象來同步四個線程,主線程等待四個線程的結束,而這四個線程的運行又是與兩個C# Mutex對象相關聯的。

其中還用到AutoResetEvent類的對象,可以把它理解為一個信號燈。這里用它的有信號狀態來表示一個線程的結束。

using System;using System.Threading;namespace ThreadExample{public class MutexSample{static Mutex gM1;static Mutex gM2;const int ITERS = 100;static AutoResetEvent Event1 = new AutoResetEvent(false);static AutoResetEvent Event2 = new AutoResetEvent(false);static AutoResetEvent Event3 = new AutoResetEvent(false);static AutoResetEvent Event4 = new AutoResetEvent(false);public static void Main(String[] args){Console.WriteLine("Mutex Sample ");//創建一個Mutex對象,并且命名為MyMutexgM1 = new Mutex(true,"MyMutex");//創建一個未命名的Mutex 對象.gM2 = new Mutex(true);Console.WriteLine(" - Main Owns gM1 and gM2");AutoResetEvent[] evs = new AutoResetEvent[4];evs[0] = Event1; //為后面的線程t1,t2,t3,t4定義AutoResetEvent對象evs[1] = Event2;evs[2] = Event3;evs[3] = Event4;MutexSample tm = new MutexSample( );Thread t1 = new Thread(new ThreadStart(tm.t1Start));Thread t2 = new Thread(new ThreadStart(tm.t2Start));Thread t3 = new Thread(new ThreadStart(tm.t3Start));Thread t4 = new Thread(new ThreadStart(tm.t4Start));t1.Start( );// 使用Mutex.WaitAll()方法等待一個Mutex數組中的對象全部被釋放t2.Start( );// 使用Mutex.WaitOne()方法等待gM1的釋放t3.Start( );// 使用Mutex.WaitAny()方法等待一個Mutex數組中任意一個對象被釋放t4.Start( );// 使用Mutex.WaitOne()方法等待gM2的釋放Thread.Sleep(2000);Console.WriteLine(" - Main releases gM1");gM1.ReleaseMutex( ); //線程t2,t3結束條件滿足Thread.Sleep(1000);Console.WriteLine(" - Main releases gM2");gM2.ReleaseMutex( ); //線程t1,t4結束條件滿足//等待所有四個線程結束WaitHandle.WaitAll(evs);Console.WriteLine(" Mutex Sample");Console.ReadLine();}public void t1Start( ){Console.WriteLine("t1Start started, Mutex.WaitAll(Mutex[])");Mutex[] gMs = new Mutex[2];gMs[0] = gM1;//創建一個Mutex數組作為Mutex.WaitAll()方法的參數gMs[1] = gM2;Mutex.WaitAll(gMs);//等待gM1和gM2都被釋放Thread.Sleep(2000);Console.WriteLine("t1Start finished, Mutex.WaitAll(Mutex[]) satisfied");Event1.Set( ); //線程結束,將Event1設置為有信號狀態}public void t2Start( ){Console.WriteLine("t2Start started, gM1.WaitOne( )");gM1.WaitOne( );//等待gM1的釋放Console.WriteLine("t2Start finished, gM1.WaitOne( ) satisfied");Event2.Set( );//線程結束,將Event2設置為有信號狀態}public void t3Start( ){Console.WriteLine("t3Start started, Mutex.WaitAny(Mutex[])");Mutex[] gMs = new Mutex[2];gMs[0] = gM1;//創建一個Mutex數組作為Mutex.WaitAny()方法的參數gMs[1] = gM2;Mutex.WaitAny(gMs);//等待數組中任意一個Mutex對象被釋放Console.WriteLine("t3Start finished, Mutex.WaitAny(Mutex[])");Event3.Set( );//線程結束,將Event3設置為有信號狀態}public void t4Start( ){Console.WriteLine("t4Start started, gM2.WaitOne( )");gM2.WaitOne( );//等待gM2被釋放Console.WriteLine("t4Start finished, gM2.WaitOne( )");Event4.Set( );//線程結束,將Event4設置為有信號狀態}}}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#常見控件用法教程》、《WinForm控件用法總結》、《C#數據結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品pans私拍| 亚洲欧美激情一区| 国产欧美日韩综合精品| 欧美激情一区二区三区在线视频观看| 中文字幕一区二区三区电影| 久久精品亚洲国产| 性欧美激情精品| 在线成人中文字幕| 日韩av电影中文字幕| 成人国产精品一区| 国产精品自产拍在线观看中文| 亚洲精品一二区| 国产在线精品一区免费香蕉| 国产99久久精品一区二区| 国产原创欧美精品| 亚洲第一福利在线观看| 欧美激情女人20p| 欧美日韩精品在线观看| 精品国产一区二区三区久久狼黑人| 欧美风情在线观看| 亚洲第一中文字幕在线观看| 最近2019年日本中文免费字幕| 色婷婷av一区二区三区久久| 久久久久久久成人| 91色精品视频在线| 成人免费看黄网站| 国产精品美女主播在线观看纯欲| 狠狠色噜噜狠狠狠狠97| 日韩高清电影免费观看完整版| 在线精品播放av| 亚洲电影成人av99爱色| 欧美日韩国产二区| 国产精品一区二区三区免费视频| 美女精品久久久| 欧美极品欧美精品欧美视频| 亚洲在线观看视频网站| 亚洲国产精品久久久久秋霞不卡| 亚洲成人精品视频在线观看| 精品呦交小u女在线| 91免费精品国偷自产在线| 欧美日韩国产中文精品字幕自在自线| 欧美激情a∨在线视频播放| 国产91在线播放九色快色| 日韩电影中文字幕在线| 久久福利视频网| 8x海外华人永久免费日韩内陆视频| 日韩中文字幕免费视频| 精品一区二区三区电影| 日韩av有码在线| 欧美日韩国产精品一区二区三区四区| 亚洲级视频在线观看免费1级| 精品国产精品自拍| 中文字幕欧美精品日韩中文字幕| 精品久久久久国产| 亚洲欧美日韩中文在线制服| 亚洲欧美资源在线| 亚洲国产精品电影| 欧美最猛性xxxxx亚洲精品| 日韩av高清不卡| 欧美专区福利在线| 亚洲欧美日韩综合| 亚洲精品国产综合区久久久久久久| 亚洲午夜久久久久久久| 成人信息集中地欧美| 日韩欧美精品在线观看| 日韩视频在线免费观看| 日韩国产欧美精品一区二区三区| 午夜剧场成人观在线视频免费观看| 大荫蒂欧美视频另类xxxx| 亲爱的老师9免费观看全集电视剧| 亚洲欧美在线x视频| 亚洲美女av网站| 国产精品福利在线观看| 亚洲天天在线日亚洲洲精| 欧美成人午夜激情视频| 日韩欧美国产高清91| 91中文在线观看| 97精品视频在线播放| 日韩电影在线观看永久视频免费网站| 最新国产精品亚洲| 欧美日韩性视频| 国产午夜精品视频免费不卡69堂| 久久成人这里只有精品| 国产亚洲精品一区二555| 国产精品视频一区二区高潮| 国产精品视频一区二区高潮| 日韩av免费在线看| 亚洲大胆人体在线| 97超级碰在线看视频免费在线看| 欧美性视频网站| 在线精品国产成人综合| 亚洲高清久久久久久| 精品人伦一区二区三区蜜桃网站| 国产91精品黑色丝袜高跟鞋| 国产精品视频男人的天堂| 国产丝袜一区二区三区免费视频| 亚洲高清不卡av| 欧美日韩一区二区在线播放| 国产午夜精品全部视频播放| 亚洲色图av在线| 亚洲自拍偷拍福利| 国产精品免费视频xxxx| 久久精品国产2020观看福利| 亚洲视频专区在线| 色中色综合影院手机版在线观看| 国产欧美精品va在线观看| 91超碰caoporn97人人| 美女黄色丝袜一区| 亚洲人成伊人成综合网久久久| 亚洲欧美精品在线| 亚洲第一色中文字幕| 亚洲片av在线| 国产精品91一区| 性金发美女69hd大尺寸| 国产精品第8页| 一区二区欧美亚洲| 91色视频在线观看| 亚洲成人a**站| 久久精品视频va| 午夜欧美不卡精品aaaaa| 久久精品国产一区二区三区| 国产亚洲精品一区二555| 欧美日韩中文字幕在线| 中文字幕久热精品视频在线| 欧美一区亚洲一区| 日韩在线观看高清| 久久夜色精品国产| 日韩中文在线中文网三级| 久久香蕉国产线看观看av| 精品福利樱桃av导航| 亲爱的老师9免费观看全集电视剧| 2019中文字幕在线| 日韩在线观看视频免费| 亚洲一区二区三区视频| 黄色成人av在线| 亚洲欧美日韩精品久久奇米色影视| 欧美一级免费看| 亚洲成色777777在线观看影院| 国产视频丨精品|在线观看| 欧美性生交大片免费| 久久久久一本一区二区青青蜜月| 欧美激情一区二区三级高清视频| 亚洲天堂第二页| 色综合男人天堂| 亚洲国产精品va在看黑人| 成人黄色免费网站在线观看| 97香蕉超级碰碰久久免费的优势| 亚洲女人初尝黑人巨大| 欧美精品videos另类日本| 国产日韩欧美在线观看| 亚洲自拍偷拍第一页| 亚洲欧美日韩直播| 精品国产乱码久久久久久天美| 久久精品99国产精品酒店日本| www日韩欧美| 亚洲精品国产综合区久久久久久久| 亚洲一级黄色片| 欧美国产欧美亚洲国产日韩mv天天看完整| 成人免费视频a| 午夜精品福利电影| 成人国内精品久久久久一区| 欧美精品亚州精品| 欧美老女人性视频| 96sao精品视频在线观看|