所有內(nèi)容均為個人見解贸典,不喜來噴。
下面所有內(nèi)容均在單核單cpu情況下討論踱卵。
不考慮I/O廊驼,執(zhí)行任務(wù)相同的情況下,并發(fā)要比串行多消耗上下文切換的時間惋砂,因此單線程比多線程要快妒挎。上面這種情形(沒有I/O)或者I/O較少的情況,我們稱之為計算密集型(CPU-bound)任務(wù)西饵,這種任務(wù)適合單線程酝掩。
與計算密集型任務(wù)相對的,就是IO密集型(I/O bound)任務(wù)眷柔。由于存在I/O阻塞的問題期虾,線程在執(zhí)行過程中需要等待。比如我們要獲取10個網(wǎng)絡(luò)資源驯嘱,每個網(wǎng)絡(luò)資源需要5s彻消。如果使用單線程的話,總共需要50s才能完成任務(wù)宙拉,而如果使用多線程的話宾尚,我們開啟10個線程,忽略線程開啟的時間谢澈,完成任務(wù)總共需要5s煌贴。因此對于IO密集型任務(wù),適合采用多線程锥忿。
結(jié)論:計算密集型任務(wù)適合單線程牛郑,IO密集型任務(wù)適合多線程。