1. 程式人生 > >多線程和多進程的選擇

多線程和多進程的選擇

linux多進程多線程

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

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

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

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

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

多進程:考慮程序穩定性

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

多線程和多進程的選擇