執行緒集區(執行緒池)與多執行緒比較

 multi-thread(多執行緒/多線程)
->就好比如一個分工很細而且彼此沒默契的工作團隊,每個任務都分別拆分給不同人處裡,而且
彼此無法互相cover,各人自掃門前雪,莫管他家瓦上霜,效率也就較差,
通常都是全部人力都上場。

電腦系統中每隻運作的程式會視為一個process
每個process中會包含一或多個thread(預設只有單一個thread)
每個threadd可被分配不同任務
一個(單核)CPU在同一個時刻只能運行一個thread,
但多核CPU則可在同一個時刻能運行多個thread
thread通常又可分為
前景執行緒(一般在winform俗稱的UI Thread)
背景執行緒(又俗稱worker thread)










thread-pool(執行緒集區,執行緒池/線程池)
->就好比一個彼此都熟悉各自業務也很有默契可隨時互相cover的team,類似球隊,而通常
團隊非必要不會全部人力都上場,會留一些坐板凳的替補選手,真的都很忙人手不足再替補上場。

也就是Thread的集合,對CPU而言每個資源都很寶貴。
若每個任務你都重新產生thread,每個thread都會占用CPU資源,
過多thread會導致資源耗竭。
因此可將建立的Thread放於這個池子中統一控管
若池中某thread任務執行完成,不將其回收而是設為空閒狀態。
當有新的額外任務時,再將任務交給thread-pool中空閒的thread去處理。
若thread-pool中沒有空閒的thread才去產生新的thread。

















留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header