【发布时间】:2013-09-20 06:39:59
【问题描述】:
我需要在单台机器上实现非常快速、低延迟、高吞吐量的进程间(或应用程序域间)通信。
消息通常每隔几毫秒流动一次(但在几分钟内,每毫秒甚至可以有多达 3-5 条消息),每条消息大约不到 1KB,目标往返延迟最大为 1 毫秒(通过往返 I意味着传递消息,然后以某种方式回调生产者以宣布消费者是否想要“声明”消息)。
我做了一些研究,似乎内存映射文件是最快的可用可能性,但是我需要专有地实现围绕它的整个通信堆栈(共享内存的分配和管理,将消息复制到其中并从中复制以及发出信号向消费者表明新消息已准备好被消费)。 我看到了一张显示 Windows 上 IPC 方法架构的图片 (http://blogs.msdn.com/b/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx),似乎这些方法已经使用了 MMF。 因此,根据我所描述的 - 我实际上不会通过重新实现命名管道已经做的事情来重新发明轮子。或者我实际上可以实现比命名管道提供的协议快得多的协议吗?
Edit1:将 fgotten 链接添加到显示命名管道构建在 MMF 之上的图片 (http://blogs.msdn.com/b/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx)
【问题讨论】:
-
我非常怀疑您是否会在 Windows 上获得这种速度 - 它不是 RTOS。
标签: c# ipc named-pipes memory-mapped-files