0

我正在進行大量計算的處理密集型系統。系統有兩個主要組件,第一個處理輸入/輸出,第二個處理數據並計算結果。但問題在於它無法處理50個項目,而它一次處理的項目超過1000個。這兩個組件都有多個運行不同任務的線程。 我在Linux平臺上並使用C++。據我瞭解,在Linux系統中,線程和進程幾乎與共享虛擬內存空間相似。 所以我的問題是,將I/O與處理單元分離並將它們放在單獨的可執行文件或進程中,然後使用共享內存或消息隊列或任何其他IPC技術是一個好主意嗎?優化吞吐量:多線程與多進程

+7

使用探查器來測量應用程序的性能並找出導致它變慢的原因是個好主意。在這種情況下投擲一些狂野的猜測是毫無意義的。 – VTT

+0

如果沒有更多的信息(更多的信息)就不可能猜出問題是什麼,但是進程間通信通常是昂貴的,在線程間並不是必須的。 – Surt

回答

0

在你的情況,絕對不是。使用不同的進程是爲了安全:如果一個進程崩潰,另一個進程繼續。如果黑客管理一個進程,您可能可以限制其權限,以便黑客無法做任何有害的事情(在這種情況下,代碼中的錯誤無法做任何有害的事情)。

使用您可用的任何分析工具。今天的計算機速度非常快,大多數時候任務運行速度太慢時,應用程序所做的一切都是愚蠢的,而不是由於缺少一些優化。