最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#信號量用法簡單示例

 更新時間:2016年07月05日 10:04:02   作者:kagula  
這篇文章主要介紹了C#信號量用法,結(jié)合簡單C#控制臺應(yīng)用程序形式分析了信號量的功能、定義、調(diào)用、釋放等操作技巧,需要的朋友可以參考下

本文實例講述了C#信號量用法。分享給大家供大家參考,具體如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
/*
 * 標(biāo)題:如何使用信號量的示例代碼
 * Author:kagula
 * Date:2015-6-16
 * Environment:VS2010SP1, .NET Framework 4 client profile, C#.
 * Note:[1]“信號量”可以看成是“授權(quán)(證)池”。
 *     一個授權(quán)(證)池內(nèi)有零個或多個授權(quán)(證)。
 *   [2]下面的示例sem of Semaphore相當(dāng)于最多只能有一個授權(quán)(證)的授權(quán)池。
 *   [3]每調(diào)用一次sem.Release添加一個授權(quán)(證)。
 *     連接調(diào)用多次sem.Release導(dǎo)致超出授權(quán)池所能容納的授權(quán)(證)數(shù)量,會拋出異常。
 *   [4]每調(diào)用一次sem.WaitOne就使用一個授權(quán)(證)。
 * */
namespace kagula
{
  class mySemaphore
  {
    //第一個參數(shù),代表當(dāng)前授權(quán)次數(shù)。
    //      0表示沒有授權(quán)(證)。
    //第二個參數(shù),代表Semaphore實例最多能容納幾個授權(quán)證。
    //      1表示最大授權(quán)次數(shù)為1次。
    //      超出允許的授權(quán)次數(shù),比如說sem.Release連續(xù)調(diào)用了兩次,會拋出異常。
    public static Semaphore sem = new Semaphore(0, 1);
    public static void Main()
    {
      //添加一次授權(quán)。
      //釋放一個sem.WaitOne()的阻塞。
      sem.Release();
      myThread mythrd1 = new myThread("Thrd #1");
      myThread mythrd2 = new myThread("Thrd #2");
      myThread mythrd3 = new myThread("Thrd #3");
      myThread mythrd4 = new myThread("Thrd #4");
      mythrd1.thrd.Join();
      mythrd2.thrd.Join();
      mythrd3.thrd.Join();
      mythrd4.thrd.Join();
      //input any key to continue...
      Console.ReadKey();
    }//end main function
  }//end main class
  class myThread
  {
    public Thread thrd;
    public myThread(string name)
    {
      thrd = new Thread(this.run);
      thrd.Name = name;
      thrd.Start();
    }
    void run()
    {
      Console.WriteLine(thrd.Name + "正在等待一個許可(證)……");
      //如果不加參數(shù)會導(dǎo)致無限等待。
      if (mySemaphore.sem.WaitOne(1000))
      {
        Console.WriteLine(thrd.Name + "申請到許可(證)……");
        Thread.Sleep(500);
        //雖然下面添加了許可,但是,其它線程可能沒拿到許可,超時退出了。
        Console.WriteLine(thrd.Name + "添加一個許可(證)……");
        mySemaphore.sem.Release();
      }
      else
      {
        Console.WriteLine(thrd.Name + " 超時(等了一段時間還是沒拿到許可(證))退出……");
      }
    }
  }//end class
}//end namespace

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#程序設(shè)計之線程使用技巧總結(jié)》、《C#操作Excel技巧總結(jié)》、《C#中XML文件操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計入門教程

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

相關(guān)文章

  • C#使用Equals()方法比較兩個對象是否相等的方法

    C#使用Equals()方法比較兩個對象是否相等的方法

    這篇文章主要介紹了C#使用Equals()方法比較兩個對象是否相等的方法,涉及C#操作對象的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#使用StreamWriter寫入文件的方法

    C#使用StreamWriter寫入文件的方法

    這篇文章主要介紹了C#使用StreamWriter寫入文件的方法,涉及C#中StreamWriter類操作文件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#中控件動態(tài)添加事件綁定的時機(jī)詳解

    C#中控件動態(tài)添加事件綁定的時機(jī)詳解

    這篇文章主要給大家介紹了在C#中為控件動態(tài)添加事件綁定的時機(jī)的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • C#實現(xiàn)多種圖片格式轉(zhuǎn)換的示例詳解

    C#實現(xiàn)多種圖片格式轉(zhuǎn)換的示例詳解

    這篇文章主要為大家詳細(xì)介紹了C#如何實現(xiàn)多種圖片格式轉(zhuǎn)換,例如轉(zhuǎn)換成圖標(biāo)圖像ICO,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C#打印PDF文檔的10種方法(小結(jié))

    C#打印PDF文檔的10種方法(小結(jié))

    這篇文章主要介紹了C#打印PDF文檔的10種方法(小結(jié)),可分多種情況來進(jìn)行,如設(shè)置靜默打印、指定打印頁碼范圍和打印紙張大小、雙面打印、黑白打印等等,一共分成10種等,感興趣的可以了解一下
    2019-04-04
  • C#使用Tesseract進(jìn)行Ocr識別的方法實現(xiàn)

    C#使用Tesseract進(jìn)行Ocr識別的方法實現(xiàn)

    本文主要介紹了C#使用Tesseract進(jìn)行Ocr識別的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • c#中多線程訪問winform控件的若干問題小結(jié)

    c#中多線程訪問winform控件的若干問題小結(jié)

    大部分情況下都會碰到使用多線程控制界面上控件信息的問題。然而我們并不能用傳統(tǒng)方法來解決這個問題,下面我將詳細(xì)的介紹
    2013-10-10
  • C# 實現(xiàn)抓包的實例代碼

    C# 實現(xiàn)抓包的實例代碼

    這篇文章主要介紹了C# 實現(xiàn)抓包的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • C#實現(xiàn)多文件打包壓縮(.Net?Core)

    C#實現(xiàn)多文件打包壓縮(.Net?Core)

    本文詳細(xì)講解了.Net?Core框架下C#實現(xiàn)多文件打包壓縮的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C#數(shù)組應(yīng)用分析

    C#數(shù)組應(yīng)用分析

    C#數(shù)組應(yīng)用分析...
    2007-08-08

最新評論

隆尧县| 民乐县| 江华| 若羌县| 莆田市| 从化市| 宣武区| 容城县| 武清区| 巧家县| 天长市| 马边| 三原县| 日土县| 兴化市| 莫力| 台江县| 奈曼旗| 寿宁县| 马龙县| 饶阳县| 鄄城县| 宁国市| 吴川市| 舟曲县| 霍州市| 鹿邑县| 新津县| 田东县| 元氏县| 视频| 鞍山市| 阿巴嘎旗| 江山市| 资中县| 沂水县| 沐川县| 龙陵县| 宣城市| 宝坻区| 且末县|