我正在研究一个处理密集型系统,它执行大量计算。系统有两个主要组件,首先是处理输入/输出,其次是处理数据并计算结果。但问题是它无法处理 50 个项目,而它应该一次处理超过 1000 个项目。这两个组件都有多个线程为不同的任务运行。 我在Linux平台上并使用c ++。在我的理解中,在Linux系统中,除了共享虚拟内存空间之外,线程和进程几乎相似。 所以我的问题是,将I/O与处理单元分开并将它们放在单独的可执行文件或进程中,然后使用共享内存或消息队列或任何其他IPC技术是否是一个好主意?
在你的情况下,绝对不是。 使用不同的进程是为了安全:如果一个进程崩溃,另一个进程将继续。如果黑客管理到一个进程,您可以限制其权限,以便黑客无法执行任何有害操作(在这种情况下,代码中的错误也无法执行任何有害操作(。
使用您可用的任何分析工具。今天的计算机是如此之快,以至于大多数时候当任务运行太慢时,它归结为应用程序所做的愚蠢事情,而不是由于缺少一些优化。