传输大数据的管道

Pipes To Transfer Large Data

当我尝试使用 NamedPipeServerStream class 对象通过调用它的 Write() 方法来传输 1GB 数据时会发生什么?特别是如果数据没有立即被客户端使用。数据保存在哪里?

使用管道传输大量数据的好方法是什么?将它拆分成更小的块并实现一些通信协议?

有没有更好的管道替代品?我想避免写入硬盘。

您可以将内存映射文件用于这些事情。它们对 IPC 非常有效。参见 here

我假设您的进程在同一台机器内进行通信。

编辑:或者您可以选择套接字。

编辑:我有一些使用命名管道的实现并且不是很稳定,所以我放弃了它,切换到内存映射文件。如果你仍然希望坚持使用命名管道,你可以将你的负载分成块,这些块可以在 header 前面加上一些相关信息(比如块大小、块索引、块总数等)和然后在写入下一个块之前等待客户端的确认。