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

首頁 > 編程 > C# > 正文

C#多線程之Semaphore用法詳解

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

Semaphore:可理解為允許線程執行信號的池子,池子中放入多少個信號就允許多少線程同時執行。

private static void MultiThreadSynergicWithSemaphore()  {   //0表示創建Semaphore時,擁有可用信號量數值   //1表示Semaphore中,最多容納信號量數值   Semaphore semaphore = new Semaphore(0, 1);   Thread thread1 = new Thread(() =>   {    //線程首先WaitOne等待一個可用的信號量    semaphore.WaitOne();    //在得到信號量后,執行下面代碼內容    Console.WriteLine("thread1 work");    Thread.Sleep(5000);    //線程執行完畢,將獲得信號量釋放(還給semaphore)    semaphore.Release();   });   Thread thread2 = new Thread(() =>   {    semaphore.WaitOne();    Console.WriteLine("thread2 work");    Thread.Sleep(5000);    semaphore.Release();   });   thread2.Start();   thread1.Start();   //因在創建Semaphore時擁有的信號量為0   //semaphore.Release(1) 為加入1個信號量到semaphore中   semaphore.Release(1);  }

說明:

1、如果semaphore.Release(n),n>semaphore最大容納信號量,將出異常。
2、當semaphore擁有的信號量為1時,Semaphore相當于Mutex
3、當semaphore擁有的信號量>1時,信號量的數量即可供多個線程同時獲取的個數,此時可認為獲取到信號量的線程將同時執行(實際情況可能與CPU核心數、CPU同時支出線程數有關)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣恩县| 平原县| 甘肃省| 闽清县| 琼结县| 临桂县| 阳曲县| 改则县| 河东区| 永泰县| 富宁县| 盐津县| 郓城县| 临江市| 仲巴县| 申扎县| 赤壁市| 光泽县| 巴林左旗| 巨鹿县| 都匀市| 托克托县| 宜阳县| 华池县| 仙游县| 修武县| 广安市| 桑日县| 开封县| 财经| 灵寿县| 荃湾区| 新河县| 麻江县| 蒙山县| 昆山市| 织金县| 资阳市| 崇信县| 阳曲县| 平罗县|