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

C#信號(hào)量用法簡單示例

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(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識(shí)別的方法實(shí)現(xiàn)

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

阳城县| 淮南市| 孟津县| 巴林右旗| 新宁县| 交口县| 崇左市| 日喀则市| 类乌齐县| 米易县| 油尖旺区| 文昌市| 天水市| 九龙坡区| 边坝县| 宁陵县| 玛曲县| 印江| 北辰区| 同江市| 鄂伦春自治旗| 墨竹工卡县| 平顶山市| 鸡泽县| 璧山县| 山东省| 柘荣县| 新河县| 山东| 华宁县| 分宜县| 治县。| 搜索| 静安区| 博客| 晋江市| 怀宁县| 新蔡县| 五寨县| 察雅县| 铁力市|