1. 程式人生 > >執行緒與程序 計算密集型 IO密集型

執行緒與程序 計算密集型 IO密集型

執行緒與程序:
  執行緒和程序通常都有一個主線/程序的負責分配任務和其他子線/程序負責執行任何。
  多程序的優點在於一個子程序掛了,不會影響其他程序(主程序掛了就全掛了),但是其建立的代價較大,Apache採用的就是多程序機制;
  而多執行緒一般要比多程序執行效率要高,但是由於共享記憶體一旦子執行緒掛了,就全掛了,ISS採用的就是多執行緒機制。
計算密集型 IO密集型
  計算密集型任務主要消耗大量CPU資源,不停進行計算。由於依靠CPU效能,一直佔用CPU進行計算,也就說一般情況下能夠採用多工的數量等於CPU核心數。該種任務C語言比較勝任。
  IO密集型任務(磁碟讀取,web服務)主要需要IO的讀取,利用CPU的效率較低,大量時間花費在IO上。由於現在有非同步IO技術,也就是說一個任務在IO等待時間時可以暫停執行,讓CPU的空閒時間用來執行其他任務,等到IO讀取完畢後在繼續執行。從而實現單核CPU上執行單程序卻能實現多工的併發。該種任務Python(執行效率相對較低)比較適合。
  對於優化,應該通過開發的服務或是業務以在專案之初就根據需求來對資源進行預先估算,大致屬於IO密集型還是計算密集型的業務,並進行專案前期的資源預算等工作的開展,也包括前期的設計和後期的優化。