c#:線程、線程池和Task關係

環境:

  • window10
  • vs2019.16.5.1
  • .netcore 3.1.1

線程:
Thread,由CLR提供,可以提供細粒度的線程控制,但是在返回值、多個線程並行/串行時候顯得功能不足,需要進一步封裝纔行,而且線程的開啓、停止都需要時間開銷,亂用的話還造成浪費。
線程池:
ThreadPool,由CLR提供,提供粗粒度的線程控制,主要用來執行短時間內執行的代碼片段,一個進程有一個線程池,由CLR統一調度。它對線程的控制力較少,而且在返回值、多個線程並行/串行時候顯也是功能不足。
任務:
Task,對ThreadPool和Thread的包裝,可以根據任務時間長短選擇使用線程池還是新的線程,通過進一步擴展,增加了返回值、多個線程並行/串行等功能。它的核心是一個調度器,默認是ThreadPoolTaskScheduler。

關係圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章