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

首頁 > 學院 > 開發設計 > 正文

C# 線程--第三線程池

2019-11-17 02:32:57
字體:
來源:轉載
供稿:網友

C# 線程--第三線程池

概述

線程池有那些優點:

1.在多線程中線程池可以減少我們創建線程,并合理的復用線程池中的線程。因為在線程池中有線程的線程處于等待分配任務狀態。

2.不必管理和維護生存周期短暫的線程,不用在創建時為其分配資源,在其執行完任務之后釋放資源。

3.線程池會根據當前系統特點對池內的線程進行優化處理。

線程池的缺點:

我們把任務交給線程池去完成后,無法控制線程的優先級,設置線程的一些名稱等信息。[不過我們可以在放入線程池之前加一層來完善這些工作]

線程池參數設置

示例代碼:

int workerThreads, completionPortThreads;ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);Console.WriteLine("線程池中輔助線程的最大數目:{0}.線程池中異步 I/O 線程的最大數目:{1}", workerThreads, completionPortThreads);ThreadPool.GetMinThreads(out workerThreads, out completionPortThreads);Console.WriteLine("線程池根據需要創建的最少數量的輔助線程:{0}.線程池根據需要創建的最少數量的異步 I/O 線程:{1}", workerThreads, completionPortThreads);//設置線程池默認參數ThreadPool.SetMaxThreads(100, 100);ThreadPool.SetMinThreads(2, 2);ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);Console.WriteLine("線程池中輔助線程的最大數目:{0}.線程池中異步 I/O 線程的最大數目:{1}", workerThreads, completionPortThreads);ThreadPool.GetMinThreads(out workerThreads, out completionPortThreads);Console.WriteLine("線程池根據需要創建的最少數量的輔助線程:{0}.線程池根據需要創建的最少數量的異步 I/O 線程:{1}", workerThreads, completionPortThreads);ThreadPool.GetAvailableThreads(out workerThreads, out completionPortThreads);Console.WriteLine("可用輔助線程的數目:{0}.可用異步 I/O 線程的數目:{1}", workerThreads, completionPortThreads);

輸出結果:

1.CLR線程池最大數:1023。I/O線程池最大數:1000。

2.線程池中最大數目和最少數量我們都可以修改。

[msdn建議:不能將輔助線程的數目或 I/O 完成線程的數目設置為小于計算機的處理器數目。

如果承載了公共語言運行時,例如由 Internet 信息服務 (IIS) 或 SQL Server 承載,主機可能會限制或禁止更改線程池大小。

更改線程池中的最大線程數時需謹慎。雖然這類更改可能對您的代碼有益,但對您使用的代碼庫可能會有不利的影響。

將線程池大小設置得太大可能導致性能問題。如果同時執行的線程太多,任務切換開銷就成為影響性能的一個主要因素。]

線程池的使用

線程池的常用方法:

public static bool QueueUserWorkItem(WaitCallback callBack, object state);

WaitCallback:表示線程池線程要執行的回調方法。

[ComVisible(true)]public delegate void WaitCallback(object state);

示例代碼:

ThreadPool.SetMaxThreads(12, 12);int workerThreads, completionPortThreads;ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);Console.WriteLine("線程池中輔助線程的最大數目:{0}.線程池中異步 I/O 線程的最大數目:{1}", workerThreads, completionPortThreads);ThreadPool.GetMinThreads(out workerThreads, out completionPortThreads);Console.WriteLine("線程池根據需要創建的最少數量的輔助線程:{0}.線程池根據需要創建的最少數量的異步 I/O 線程:{1}", workerThreads, completionPortThreads);Stopwatch stopwatch = new Stopwatch();stopwatch.Start();WaitCallback callback = index =>{    Console.WriteLine(String.Format("{0}: Task {1} started", stopwatch.Elapsed, index));    Thread.Sleep(10000);    Console.WriteLine(String.Format("{0}: Task {1} finished", stopwatch.Elapsed, index));};for (int i = 0; i < 20; i++){    ThreadPool.QueueUserWorkItem(callback, i);}Console.Read();

輸出結果:

 1 00:00:00.0009109: Task 0 started 2 00:00:00.0011152: Task 2 started 3 00:00:00.0010331: Task 1 started 4 00:00:00.0013977: Task 3 started 5 00:00:01.0640656: Task 4 started 6 00:00:01.5959091: Task 5 started 7 00:00:02.1282115: Task 6 started 8 00:00:02.6604640: Task 7 started 9 00:00:03.1919942: Task 8 started10 00:00:03.7241812: Task 9 started11 00:00:04.2562930: Task 10 started12 00:00:04.7883300: Task 11 started13 00:00:10.0337174: Task 0 finished14 00:00:10.0337912: Task 2 finished15 00:00:10.0341861: Task 3 finished16 00:00:10.0343205: Task 13 started17 00:00:10.0342149: Task 12 started18 00:00:10.0345326: Task 1 finished19 00:00:10.0347520: Task 14 started20 00:00:10.9400517: Task 15 started21 00:00:11.0639205: Task 4 finished22 00:00:11.0643085: Task 16 started23 00:00:11.5960161: Task 5 finished24 00:00:11.5966256: Task 17 started25 00:00:12.1279212: Task 6 finished26 00:00:12.1294851: Task 18 started27 00:00:12.6609840: Task 7 finished28 00:00:12.6613285: Task 19 started29 00:00:13.1921462: Task 8 finished30 00:00:13.7240561: Task 9 finished31 00:00:14.2560682: Task 10 finished32 00:00:14.7880441: Task 11 finished33 00:00:20.0342193: Task 13 finished34 00:00:20.0354372: Task 14 finished35 00:00:20.0343117: Task 12 finished36 00:00:20.9402809: Task 15 finished37 00:00:21.0662233: Task 16 finished38 00:00:21.5983967: Task 17 finished39 00:00:22.1293673: Task 18 finished40 00:00:22.6623133: Task 19 finished
View Code

1:00秒共開啟4個線程(為線程池中最少線程數:當達到線程池中創建線程最小線程時,線程池開始創建線程)。2:01到04秒之間平均1秒創建一個線程.線程池創建線程每秒不會超過2個。3:04秒時線程池中的線程數已達最大值,無法在創建新的線程。4:10秒時線程池中線程ID0-4已完成任務,線程池又開始重新創建線程(線程ID為:12-15)共4個。

CLR線程池與IO線程池

測試CLR線程池占滿后,會不會影響IO線程池的正常使用?

示例代碼:

ThreadPool.SetMaxThreads(5, 5);    ThreadPool.SetMinThreads(5, 5);int workerThreads, completionPortThreads;ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);Console.WriteLine("線程池中輔助線程的最大數目:{0}.線程池中異步 I/O 線程的最大數目:{1}", workerThreads, completionPortThreads);ManualResetEvent waitHandle = new ManualResetEvent(false);Stopwatch watch = new Stopwatch();watch.Start();//IO線程池WebRequest request = HttpWebRequest.Create("http://www.taobao.com/");request.BeginGetResponse(ar =>{    var response = request.EndGetResponse(ar);    Console.WriteLine(watch.Elapsed + ": Response Get");}, null);//CLR線程池for (int i = 0; i < 10; i++){    ThreadPool.QueueUserWorkItem(index =>     {        Console.WriteLine(String.Format("{0}: Task {1} started", watch.Elapsed, index));        waitHandle.WaitOne(); //阻塞線程池    },i);}Console.Read();

輸出結果:

1. 把CLR線程池最大線程數和IO線程池最大線程數都設置為:5.

2.向CLR線程池中增加10個線程任務,并且阻塞線程池。最后輸出結果中只打印出5個線程運行的信息。CLR線程池已達最大線程數,IO線程依然有回復數據。

證明CLR線程池占滿后不會影響到IO線程池的使用。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一区二区三区在线视频观看| 亚洲精品美女久久| 日韩高清免费观看| 欧美高清视频在线| 国产做受69高潮| 亚洲一区av在线播放| 国产精品www色诱视频| 亚洲高清久久网| 国产69久久精品成人看| 欧美洲成人男女午夜视频| 色一区av在线| 亚洲一区二区三区成人在线视频精品| 国产亚洲精品美女| 亚洲男人天堂2019| 精品少妇v888av| 欧美激情欧美激情| 91精品久久久久久| 日本成人激情视频| 精品电影在线观看| 亚洲护士老师的毛茸茸最新章节| 久久亚洲精品小早川怜子66| 亚洲区中文字幕| 国内偷自视频区视频综合| 日韩一区二区欧美| 久久视频在线看| 91亚洲国产成人精品性色| 国产精品v日韩精品| 中文字幕一区二区精品| 亚洲aaa激情| 亚洲97在线观看| 亚洲综合中文字幕在线观看| 欧美精品激情视频| 欧美日韩国产影院| 久久久国产精品视频| 久久精品国产亚洲精品| 一级做a爰片久久毛片美女图片| 日韩高清免费在线| 亚洲成人免费网站| 清纯唯美亚洲综合| 欧美激情视频网站| 欧美性猛交xxxx偷拍洗澡| 亚洲香蕉在线观看| 在线日韩精品视频| 国产噜噜噜噜噜久久久久久久久| 欧美放荡办公室videos4k| 欧美一级淫片videoshd| 亚洲第一免费播放区| 2021久久精品国产99国产精品| 欧美激情视频在线免费观看 欧美视频免费一| 2019精品视频| 欧美大尺度激情区在线播放| 国产精品高精视频免费| 久久九九免费视频| 九九热这里只有精品6| 久久久亚洲国产天美传媒修理工| 国产伦精品免费视频| 性欧美xxxx交| 91精品视频免费看| 91久久在线观看| 亚洲毛片在线观看.| 亚洲国产小视频在线观看| 久久影视免费观看| 国产精品专区一| 国内精品视频久久| 91高清在线免费观看| 91精品国产亚洲| 日韩av电影免费观看高清| 日韩一区二区在线视频| 影音先锋日韩有码| 亚洲欧美中文日韩在线v日本| 97视频网站入口| 精品国产一区二区三区久久久| 深夜福利亚洲导航| 色婷婷久久av| 美女福利精品视频| 亚洲大胆人体在线| 97久久久久久| 5252色成人免费视频| 成人精品久久av网站| 国产亚洲精品久久久久久牛牛| 欧美日韩成人在线视频| 亚洲午夜女主播在线直播| 欧美另类在线播放| 色综合久久久888| 91网站免费看| 97国产精品人人爽人人做| 国产精品永久免费视频| 亚洲欧美一区二区三区情侣bbw| 欧美成人激情视频免费观看| 韩国视频理论视频久久| 伊是香蕉大人久久| 国产精品成人品| 亚洲自拍偷拍网址| 裸体女人亚洲精品一区| 国产亚洲精品美女久久久久| 国产999精品久久久| 日韩国产一区三区| 亚洲免费视频观看| 国产亚洲人成a一在线v站| 97在线观看视频国产| 国产成人短视频| 久久免费精品日本久久中文字幕| 欧美国产日韩一区二区| 欧美日韩亚洲一区二| 欧美第一页在线| 色综合色综合久久综合频道88| 色综合久久88| 日本精品一区二区三区在线| 日韩av有码在线| 欧美成人sm免费视频| 欧美有码在线观看| 国产97色在线|日韩| 欧美日韩国产一中文字不卡| 国产精品午夜视频| 亚洲精品欧美一区二区三区| 久久久精品在线| 国产精品久久久久久久久久小说| 欧美裸身视频免费观看| 亚洲电影免费观看高清完整版在线观看| 欧美日韩国产在线播放| 久久久成人精品视频| 亚洲精品黄网在线观看| 日韩欧美精品网站| 精品久久久久久中文字幕一区奶水| 国产精品精品视频| 免费99精品国产自在在线| 精品国产乱码久久久久酒店| 久久精品视频在线| 久久久国产精品x99av| 91久久久久久国产精品| 亚洲最新av在线网站| 8090成年在线看片午夜| 欧美另类极品videosbestfree| 亚洲精品白浆高清久久久久久| 亚洲美女福利视频网站| 欧美成人剧情片在线观看| 中文字幕亚洲国产| 尤物yw午夜国产精品视频| 中文字幕日韩精品在线| 欧美日本黄视频| 亚洲欧美精品中文字幕在线| 精品久久久久久久久久国产| 欧美黑人又粗大| 欧美精品videosex极品1| 日韩av中文在线| 秋霞午夜一区二区| 最近中文字幕日韩精品| 国产精品99导航| 国产视频观看一区| 91高清在线免费观看| 在线亚洲午夜片av大片| 国产精品免费久久久久影院| 亚洲欧美在线第一页| 国产精品久久久久av免费| 在线a欧美视频| 亚洲电影免费在线观看| 97婷婷大伊香蕉精品视频| 久久91超碰青草是什么| 国产精品7m视频| 97不卡在线视频| 欧美精品成人在线| 欧美国产精品va在线观看| 日韩亚洲欧美中文高清在线| 亚洲电影免费观看高清完整版在线|