CPU密集型
一些進程絕大多數時間在計算上,稱為計算密集型(CPU密集型)computer-bound。一些大量循環的代碼(例如:圖片處理、視頻編碼、人工智能等)就是CPU密集型。
I/O密集型
有一些進程則在input 和output上花費了大多時間,稱為I/O密集型,I/O-bound。比如搜索引擎蜘蛛大多時間是在等待相應這種就屬於I/O密集型。
Nodejs
眾所周知node.js是單線程的,正常來說nodejs處理CPU密集型就比較乏力,畢竟只有一條線程。
node從他推出至今,充滿贊美和飽受詬病的都是其單線程模型,所有的任務都在一個線程中完成(I/O等例外),優勢的地方自然是免去了頻繁切換線程的開銷,以及減少資源互搶的問題等等,但是當nodejs面對cpu密集型模型的時候就力不從心了。盡管node擁有異步機制,可以把一些耗時算法丟入eventloop等待下個事件循環再做,但是因為其任然是單線程模型,所以終究會造成阻塞。