麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

細說.NET中的多線程(二線程池)

2019-11-14 13:52:39
字體:
來源:轉載
供稿:網友

上一章我們了解到,由于線程的創建,銷毀都是需要耗費大量資源和時間的,開發者應該非常節約的使用線程資源。最好的辦法是使用線程池,線程池能夠避免當前進行中大量的線程導致操作系統不停的進行線程切換,當線程數量到達了我們設置的上限,線程會自動排隊等待,當線程資源可用時,隊列中的線程任務會依次執行,如果沒有排隊等候的資源,線程會變為閑置狀態。

使用ThreadPool來訪問線程池

這種做法可以讓我們不用那么復雜的去實現創建,重用線程的邏輯,但是也有一些限制,比如由他內置的方法,我們不知道什么時候線程池里面的任務會結束,也不能獲取線程的返回值。為了解決這些問題,微軟引入了一個新的概念。

使用Task來訪問線程池

引入了Task之后,你可以用如下實現來替代ThreadPool

這些實現都是等價的。Task本身實現了很多ThreadPool不能做的事情。

使用Task來獲得線程的返回值

 

使用Task來等待線程結束

更多Task同步編程的使用,請參見(還沒寫,先給自己挖個坑O(∩_∩)O)。

異步委托

ThreadPool.QueueUserWorkItem沒有提供一種簡單的機制來獲取線程的返回值。異步委托解決了這個問題,支持了傳入一系列的參數。此外,異步委托中沒有處理的異常會很方便的在調用線程的重新拋出(在調用EndInvoke的時候),因此不需要顯示的處理。

通過異步委托來執行任務主要分一下幾步:

  1. 初始化并聲明一個你想要執行的委托
  2. 在委托上調用BeginInvoke,把返回值保存為IAsyncResult中

調用BeginInvoke不會阻塞當前線程,因此你可以在調用完之后執行其他你想要同步的操作

  1. 當你需要獲取委托的返回值時,調用EndInvoke方法,把IAsyncResult傳入EndInvoke中

阻塞的方式執行異步委托

 

EndInvoke主要做3件事: 1. 等待異步委托完成 2. 接收返回值 3. 把異步線程中未處理的異常在當前線程中重新拋出。

非阻塞的方式執行異步委托

你也可以在調用BeginInvoke的時候指定一個回調方法,這個方法會在異步委托結束的時候自動調用。這樣異步委托就像是一個后臺線程一樣自動執行,不需要主線程等待。只需要在BeginInvoke的時候做一些額外的操作即可實現這種操作。

關于線程池

Jeffery在C# via CLR Chapter27中針對線程池的使用給出了一些建議。目前我們允許開發者來指定一個線程池的最大線程數。但是事實證明,我們往往不應該為一個線程池指定線程的上限,否則可能會出現程序死鎖或者餓死的狀態。比如你可能設置了1000個線程,但是某一時刻正好有第1001個線程需要等待所有線程結束才能執行,這種情況如果你限制了線程池線程的個數,就會出現死鎖。從開發的另一個角度說,你也不應該限制一個進程使用多少資源,比如一個進程可以使用多少內存,使用多少帶寬.因此雖然目前你可以通過GetMaxThreads, SetMaxThreads,GetMinThreads,SetMinThreads ,GetAvailableThreads來進行線程個數的限制,但是他仍然不建議大家這樣做。這些限制可能會讓你的程序運行的更慢。

 

關于使用Task訪問線程池:

細說.NET中的多線程 (三 使用Task)

 


作者:獨上高樓
出處:http://www.companysz.com/myPRogram/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片在线免费播放 | 精品久久久久久久久久久aⅴ | 黄色网址免费进入 | 一级免费毛片 | 精品国产99久久久久久宅男i | 成人免费网站在线观看 | 精品一区二区三区在线观看视频 | 免费色片| 羞羞视频免费网站含羞草 | 国产免费网站视频 | 日产精品久久久一区二区福利 | 250pp久久新| 中文字幕在线第二页 | 国产91片 | 色播亚洲 | 欧美成人午夜一区二区三区 | 91在线视频免费观看 | 依人九九宗合九九九 | 久久久久国产成人精品亚洲午夜 | 亚洲视频高清 | 蜜桃网站在线观看 | 少妇一级淫片免费放播放 | 色婷婷久久一区二区 | 中文字幕电影免费播放 | 日韩黄色成人 | 黄色大片在线观看 | 2019中文字幕在线播放 | 色吧综合网 | av电影在线观看免费 | 国产91免费看 | 黄视频免费在线 | 精品国产一区二区三区成人影院 | 久久久久国产成人精品亚洲午夜 | 精品人伦一区二区三区蜜桃网站 | 亚洲福利视频52 | 92看片淫黄大片欧美看国产片 | 国产免费资源 | 成人在线观看一区二区三区 | 8x成人在线电影 | 欧美a级大胆视频 | 日韩精品免费一区二区三区 |