多線程和多進程的選擇

第一次寫博客。。。最近發現很多技術的東西看了很快又忘了,希望通過自己的理解寫出來,我想這是一種方法吧。

前段時間去面試linux軟件,面試官問我多線程和多進程有什麼優缺點,什麼時候使用多進程,多線程,當時就懵逼。其實之前有在網上看到過這個問題和答案,然後略看了一眼,沒有真正去了解。如果現在有人問我這個問題我怎麼回答呢,我想我有我自己的答案了。

首先多進程之間內存是隔離的,所以同步比較簡單,但是進程間的通信比較麻煩,需要通過IPC(管道,命名管道,消息隊列,socket)來通信。進程的創建和銷燬,消耗的資源比較多。

而多線程共享進程的數據,所以數據共享比較簡單,切換比較快,但線程間的同步比較麻煩,需要互斥鎖,信號量等來同步。但也由於沒有內存隔離,一個線程的崩潰會導致整個進程掛掉,線程執行的隨機性可能導致邏輯混亂,甚至可能會導致死鎖的現象。

那麼什麼時候用多進程什麼時候用多線程呢?

多進程:考慮程序穩定性

多線程:需要頻繁創建和銷燬,需要大量運算的程序

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