近日同事間正在舉辦關於進程和線程的性能差異大討論。有幾個搞Linux的幾乎都異口同聲說linux下進程和線程是一樣的(想當年我師父也這麼說),搞的那位說線程高效的同事很鬱悶。
本人查了下相關資料
尤其是https://www.ibm.com/developerworks/cn/linux/l-inside/
linux調度的單位是TASK ,無論一個進程還是線程都對應一個內核TASK。所以從這看,沒差別。
但是,同一進程子線程TCB指向的內存相同。這意味着TASK切換,內存區的切換工作會少,即CPUL1 L2緩存要換出的概率小很多。這明顯是提速。
(現在稍微有些小忙,有空的話會去做個試驗,看看猜想對不)
不過進程管理比較方便,有OS給它保護。不會像線程,一個飛了整個進程掛了。