线程亲和力与进程亲和力

Thread affinity vs Process affinity

我有一个对延迟敏感的应用程序,它由 2 个逻辑 部分组成,可以 运行 并行。我最初的设计是让每个逻辑部分成为一个独立的程序,并且 运行 它们在不同的核心上通过 文件映射共享内存 传递信息。但是在知道 即使来自同一进程的 2 个线程可以 运行 在不同的内核中 之后,我考虑将这两个程序合并到一个进程中,每个 运行在绑定到独立核心的 线程 上运行。而且由于一个进程中的所有线程共享内存space,我可以去掉共享内存,直接使用程序内存space,这样会更快。

我的推理是否正确?如果正确,将应用程序分成 个进程 而不是在一个进程中使用 线程亲和性 有什么好处?

1) 是的,你的推理是正确的。在Linux中你可以绑定不同内核的不同线程,这样你就可以摆脱文件映射共享内存.

2) 文件映射共享内存(我会使用术语进程间共享内存)主要用作communication/messaging 不同进程之间,例如在需要一直在后台 运行 的监视进程和随时可以 opened/closed 的用户界面进程之间。在您的情况下,您只需要线程关联。