什麼是進程?
舉個栗子,如下圖:打開任務管理器
進程負責爲程序的運行提供必備的環境。
進程就相當於工廠中的車間一樣。
什麼是線程?
線程是計算機中的最小計算單位,線程負責執行進程中的程序。
線程就想當於工廠中的工人。
單線程
- 一個線程(一個人幹活)
多線程
- 多個線程(多個人幹一個活)
單線程好還是多線程好?
大家都知道是多線程更好,速度更快,大家一起幹活效率更高。但是單線程和多線程之間也沒有絕對的好壞,主流還是多線程比較好。
但我們的js、瀏覽器都是單線程的,理論上一個線程負責渲染頁面,一個線程負責執行js代碼,會發現一個問題:當一個線程在渲染頁面時,另一個在改css樣式,這時候頁面就不知道該聽誰的,所以js都是單線程的,只要在執行js代碼時,網頁都是靜止的,停止渲染,在執行完之後才進行頁面渲染。
傳統的服務器都是多線程的。 這意味着每次進來一個請求,就創建一個線程去處理請求。
Node的服務器是單線程的。 Node處理請求時是單線程的,但是在後臺擁有一個I/O線程池。