您好,登錄后才能下訂單哦!
第一次寫博客。。。最近發現很多技術的東西看了很快又忘了,希望通過自己的理解寫出來,我想這是一種方法吧。
前段時間去面試linux軟件,面試官問我多線程和多進程有什么優缺點,什么時候使用多進程,多線程,當時就懵逼。其實之前有在網上看到過這個問題和答案,然后略看了一眼,沒有真正去了解。如果現在有人問我這個問題我怎么回答呢,我想我有我自己的答案了。
首先多進程之間內存是隔離的,所以同步比較簡單,但是進程間的通信比較麻煩,需要通過IPC(管道,命名管道,消息隊列,socket)來通信。進程的創建和銷毀,消耗的資源比較多。
而多線程共享進程的數據,所以數據共享比較簡單,切換比較快,但線程間的同步比較麻煩,需要互斥鎖,信號量等來同步。但也由于沒有內存隔離,一個線程的崩潰會導致整個進程掛掉,線程執行的隨機性可能導致邏輯混亂,甚至可能會導致死鎖的現象。
那么什么時候用多進程什么時候用多線程呢?
多進程:考慮程序穩定性
多線程:需要頻繁創建和銷毀,需要大量運算的程序
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。