在C和C#应用程序之间进行IPC的最快方法是什么?

时间:2011-08-30 16:04:59

标签: c winapi interop c#-2.0 ipc

我想从C应用程序向C#应用程序发送大量字符串(~250000)< 1sec。当我使用WM_COPYDATA和SendMessage时,我的C#应用​​程序挂起。我还可以做些什么?命名管道仅包含在.NET 4中,我使用的是.NET 2.

编辑: 我要坚持使用WM_COPYDATA并附加到列表(这是一个快速操作)。然后处理此列表。

3 个答案:

答案 0 :(得分:5)

最快的选择可能是使用named pipes via P/Invoke。这仍然比大多数其他IPC选项高得多。

答案 1 :(得分:4)

共享内存或MMF是最快的方法。它与内核对象一样快,用于发送有关数据可用性的信号。而且,更重要的是,您可以先打开共享内存,然后将数据直接放在那里(保存一个复制操作)并向其他应用程序发出信号。其他应用程序可以直接从共享内存中使用数据(同样,无需复制)。

答案 2 :(得分:1)

目前在win32上不是最快的,但值得调查:0mq

在Windows上使用TCP套接字,但非常有效。

对于封闭源解决方案,我不认为29 West Ultra Messaging可以轻易胜过,包括.net中零拷贝消息传递的罕见功能