多進程和多線程到底有什麼區別?
01-23
我實在是想搞清楚,網上的大難實在太多,我求得真理就那麼難嗎?
我不是專家。
每個進程都至少有一個線程。 一般,系統創建一個進程的開銷是比較大的,需要分配內存,內核資源等等。 不同進程間無法直接共享彼此擁有的這些資源。而我們可以在同一進程內創建多個線程,這些線程相對來說『輕量級』很多,它們可以共享所在進程的各種資源。
首先,粗略的說,你可以認為線程是 個『輕量級』進程。用多線程模式,你可以很輕鬆的 實現 並行。 即,在多核 的設備上(如你有4核cpu), 你可以開4個線程,以便這4個核 能同時 為你這個 進程 的工作服務。多進程沒什麼經驗,以下是我的想法:
多進程 相對多線程而言,裡面每一個進程都更加獨立, 它們可以不再同一個機器上。它們執行的代碼也不同。 比如你找到了兩個開源項目來為你的 某個功能服務,如果時間緊迫,,你可以開兩個進程運行這兩個項目,然後把結果傳給你自己的 進程。 進程間數據傳輸方式很多, 簡單的 可以寫文件,用埠,,複雜的google下~~. 而且,你也可以配置成分散式系統,這個機器跑一個集成,另一個機器跑另一個等等。
以上個人淺見。 坦白講,我依然對進程和線程存有很多疑惑,我覺得如果想真正了解,先學操作系統原理這本來就不是一個簡單的問題。
要說清楚了,就必須解決一下問題:1.線程和進程是怎麼來的? 操作系統給創建的。2.操作系統是幹什麼的呢? 調度和資源管理的(當然還有各種各樣的功能和取捨)。
3.為啥要用進程?不用可不可以?用了有啥好處?用了有啥劣勢?4.能不能同時有兩個進程?宏觀上能不能同時執行?微觀上能不能同時執行?5.有兩個或更多進程的時候,會有什麼問題?6.為啥要有線程?多個線程比多個進程的優勢在哪裡,缺點在哪裡?到了這裡,多進程和多線程的區別,不就很清楚了嘛。
《現代操作系統》里的進程章節有講
推薦閱讀:
※比爾·蓋茨 裝Win8.1裝了一天,怎麼看?
※當收集的圖片多了整理不當會感覺混亂,如何給圖片添加標籤?然後通過搜索標籤找到圖片?
※未來還會出現什麼樣的手機操作系統取代安卓和iOS呢?還是短時間內無法取代?
※Firefox OS 的出現意味著什麼?你看好 Firefox OS 嗎?
※怎麼製作u盤啟動盤?怎麼用u盤裝系統?