多進程和多線程區別

大白話理解下兩者的區別

1. 多進程:每個進程就像系統中的一個業務線,工廠的一個車間。比如你在電腦上,可以邊聽音樂,邊聊qq,打開一個蝦米音樂就開啓了一個進程,打開一個qq就開啓了另外一個進程;

再比如一個溯源系統,一個業務是流水線上的產品要不斷被打碼sweepCode()添加信息,另一個業務是每隔1分鐘倒計時我要統計下這1分鐘內被掃碼的這些商品的合格率scheduleTask()。如果在單進程系統裏比如用nodejs開發(不用cluster)的一個系統,1分鐘倒計時結束後系統後臺在執行scheduleTask()方法時,流水線sweepCode()就被阻塞處於等待狀態,直到這一輪scheduleTask()方法執行結束,才能執行打碼方法。

而這兩個業務在邏輯上應該是異步互不影響的,流水線應該是不斷打碼不停,後臺1分鐘倒計時統計合格率也可以同時執行。這時候就需要開啓多進程去解決這個問題,讓不同業務(不同請求)可以異步執行。

 

2. 多線程:多線程是針對每個業務進程內部來說的,比如上面提到的流水線打碼sweepCode()這個方法,流水線不可能只有一個掃碼器,一般都會有多個人在同時掃碼錄入信息,那麼就會有多個用戶併發訪問sweepCode()方法的情況出現,怎麼提高系統的併發量和吞吐率tps,就要引入多線程。

總結一句不太嚴謹的話,多進程是爲了讓業務可以同時執行。多線程是爲了讓多用戶可以同時使用某一功能業務。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章