對進程和線程一個形象的比喻

進程和線程是計算機領域的重要概念,還記得當年上操做系統課時,老師讓咱們每一個人寫一篇文章談談對二者的認識、 緩存

我以爲經過一個形象的比喻來解釋二者的區別,可能效果會更好。 多線程

若是火車站開放一個窗口售票,只能一個個處理買票人的請求,這時候就比如是一種「單線程」形式,這樣的效率實際上是很低的。 性能

但更好的方式是開放多個窗口,同時進行售票,效率就會提高不少了。這就比如是一種「多線程」形式。 測試

那麼,能夠得出結論:通常狀況下,多線程的處理速度要高於單線程。 操作系統

如今咱們站在更高的角度來看這個問題,一個火車站,就比如一個「進程」,它包含了多個「線程」。 線程

那麼,多個火車站同時售票,就還比有了多個「進程」。進程和線程是一種很簡單的關係,進程包含了線程。 進程

若是把火車站比做進程,那售票窗口就是線程。 資源

再來分析一下。多線程必定比單線程效率高嗎?並非絕對的。 效率

其實還要考慮一個因素,那就是系統資源。每開啓一個線程,都須要消耗必定的系統資源,而單線程是獨享系統資源,單位時間內吞吐速度更快。 請求

舉個例子,當前流行的緩存系統Memcache和Redis,前者是多線程模型,後者是單線程模型。但是在性能測試時,Redis並無表現的比Memcache差。

這其中的緣由,很值得思考。

相關文章
相關標籤/搜索