【问题标题】:What's the fastest way to IPC between C and C# application?在 C 和 C# 应用程序之间进行 IPC 的最快方法是什么?
【发布时间】:2011-11-06 22:54:44
【问题描述】:

我想在

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

【问题讨论】:

标签: c winapi interop c#-2.0 ipc


【解决方案1】:

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

【讨论】:

  • 不确定,但我认为这段代码有问题。它发送几个字符串然后停止(从 C 应用程序端)
  • @blez:请务必阅读该帖子底部的 cmets - 需要设置一些重叠 IO 标志,这些标志不在原始帖子中...
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    在 Windows 上使用 TCP 套接字,但效率很高。

    对于一个封闭源代码的解决方案,我认为 29 West 的 Ultra Messaging 不容易被击败,包括 .net 中罕见的零复制消息传递功能

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2018-05-31
      • 2011-01-02
      • 2016-03-22
      • 1970-01-01
      相关资源
      最近更新 更多