国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#線程隊列用法實例分析

2020-01-24 01:29:19
字體:
來源:轉載
供稿:網友

本文實例講述了C#線程隊列用法。分享給大家供大家參考。具體如下:

using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace ThreadPro{ class Program {  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);  static void Main(string[] args)  {   Console.WriteLine("Mutex Sample ");   //創建一個Mutex對象,并且命名為MyMutex   gM1 = 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;   Program tm = new Program();   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("方法一運行, Mutex.WaitAll(Mutex[])");   Mutex[] gMs = new Mutex[2];   gMs[0] = gM1;//創建一個Mutex數組作為Mutex.WaitAll()方法的參數   gMs[1] = gM2;   Mutex.WaitAll(gMs);//等待gM1和gM2都被釋放   gM1.ReleaseMutex(); //修正上一次出現的錯誤   gM2.ReleaseMutex(); //修正上一次出現的錯誤   Thread.Sleep(2000);   Console.WriteLine("方法一完畢,WaitAll(Mutex[]) satisfied");   Event1.Set(); //線程結束,將Event1設置為有信號狀態  }  public void t2Start()  {   Console.WriteLine("方法二運行, gM1.WaitOne( )");   gM1.WaitOne();//等待gM1的釋放   gM1.ReleaseMutex(); //修正上一次出現的錯誤   Console.WriteLine("方法二完畢, 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對象被釋放   gM1.ReleaseMutex(); //修正上一次出現的錯誤   Console.WriteLine("t3Start finished, Mutex.WaitAny(Mutex[])");   Event3.Set();//線程結束,將Event3設置為有信號狀態  }  public void t4Start()  {   Console.WriteLine("t4Start started, gM2.WaitOne( )");   gM2.WaitOne();//等待gM2被釋放   gM2.ReleaseMutex(); //修正上一次出現的錯誤   Console.WriteLine("t4Start finished, gM2.WaitOne( )");   Event4.Set();//線程結束,將Event4設置為有信號狀態  } }}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舞阳县| 民乐县| 习水县| 田阳县| 富民县| 紫金县| 木兰县| 香格里拉县| 黄山市| 图们市| 承德市| 攀枝花市| 迭部县| 甘孜县| 万盛区| 文安县| 普洱| 巴塘县| 胶南市| 吕梁市| 博客| 仁寿县| 绥中县| 玉林市| 卢湾区| 外汇| 邵东县| 安图县| 胶州市| 米易县| 格尔木市| 巴彦淖尔市| 若羌县| 关岭| 同仁县| 平原县| 吴忠市| 元江| 崇义县| 黔南| 文水县|