Win32中用于进程间通信的最佳IPC方法是什么?

4

我需要使用本地C ++(.NET不适用)为进程(在整个机器上)实现进程间通信系统。更详细地说,我正在考虑使用二进制格式的消息在进程之间建立消息路由系统。消息的发送/接收必须是异步的。

TCP套接字可能是其中之一的选择。但是,我想知道是否有更好的选择以获得更高的性能。(我可以忽略安全问题。)

我不要求详细的代码,只需要您的见解。


1
值得一提的是,Windows API 是一个 C API。 - Chris Becke
3个回答

4
如果您有空闲时间,并且喜欢冒险和尝试,您可以使用未记录的Windows功能:本地过程调用。它一直存在,并且可能是最快的,因为它是所有其他功能的基础。

这很有趣:这是我第一次听说它。 - Felice Pollano
根据维基百科上的链接,本地过程调用仅允许机器内部的调用。 - Prof. Falken
@Amigable - 是的,因为问题是关于“机器内部”IPC的。 - Simon Mourier
抱歉,我对英语的理解刚刚提高了。 - Prof. Falken
@MartinBrown - 就像我说的,这是一个冒险的选择。顺便说一下,它已经存在了20年。 - Simon Mourier
显示剩余4条评论

3
你也应该看一下命名管道: http://msdn.microsoft.com/en-us/library/aa365590%28v=vs.85%29.aspx。我也知道内存映射文件用于IPC: http://msdn.microsoft.com/en-us/library/ms810613.aspx,但我个人从未尝试过。我在单机IPC策略中同时使用了NamedPipes和Socket,但是我坦白地说,我从未测量过两种方法之间的性能差异,或者至少我没有注意到如此大的差异,以至于可以说“避免这个…”或“更喜欢这个…”。也许从你更自信的技术开始会给你一个良好的工作结果,以及更多的自由时间;)

1
是的。在Stack Overflow上也可以看到这个链接:https://dev59.com/-0rSa4cB1Zd3GeqPY8Lb - Simon Mourier

2

我是内存映射文件的粉丝。 使用读写锁来提供访问限制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接