1

我有 2 个进程,我希望其中一个进程以高数据吞吐量与另一个进程通信。我已经尝试过 IPC(特别是 boost::iterprocess)和套接字,但它们的性能/吞吐量太慢而无法使用。

我的后备选项是将第二个进程作为第一个的附加子进程启动(加载它的 dll,创建“工具”等),它具有最佳性能,因为它们在技术上是相同的进程,并且传递数据只是用DLL调用接口函数。

我正在寻找避免这样做的方法,但仍然具有那种程度的性能。是否可以设置一个 2 个进程可以加载并以某种方式共享内存空间的 DLL?IPC 和套接字是这里唯一的选择吗?

4

3 回答 3

1

在 Windows 上,您可以使用命名管道。在本地使用时,它们曾经被认为比套接字更有效。然而,它们已经过时了。你可以在这里了解更多关于命名管道的微软文档

于 2013-02-11T21:21:32.083 回答
0

对于本地进程,您可以使用共享文件。如果你对文件进行内存映射,它会快得多。

于 2013-02-11T21:22:57.013 回答
0

您的问题中的“IPC”是什么?套接字、管道、共享内存都是进行 IPC 的方法。是的,您可以在 Windows、Linux 和其他通用系统上使用共享内存。在 C++ 中,您可以将内存块声明为共享(至少在 Windows 上),也可以调用内存映射文件 (MMF) 函数。在 Linux 和 BSD 上,您也使用内存映射文件函数。除了将第二个进程转换为 DLL 之外,MMF 是最快的方法。命名管道和其他任何东西都比较慢。

于 2013-02-11T21:30:40.170 回答