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