多執行緒與非同步

發表日期 : 3/26/2017 1:52:50 PM

Task -------> 新執行緒 ------> 讀取網路資源

多執行緒 => 使用另一條執行緒(透過CLR建立一個新執行緒)來替代原本會被鎖定的主執行緒,也就是浪費一點的執行緒資源(CPU與記憶體)換來可回應的介面。

 

非同步 -------> 執行緒池 ------> 讀取網路資源

非同步 => 非同步會將工作交給執行緒池,這時當讀取網頁資源這個工作時不會再占用任何CPU資源,直到非同步完成(讀取資源完畢),非同步才會通過回呼的方式通知執行緒池,讓CLR回應非同步完成。

 

# 執行緒池中是使用DMA (Direct Memory Access,直接記憶體存取)模式,直接記憶體存取是一種不經過CPU而直接進行記憶體資料讀取的機制。

 

使用情境區分

  • CPU Bound : 適合採用多執行緒。
  • IO Bound : 適合採用非同步。

分類 : 分享 作者 : 莊英澔

讀者留言


3/31/2017 1:24:11 AM
bmwlab

● Active Directory