用途:本技能用于在 .NET 中基于 System.IO.Pipelines 实现高性能流式 I/O,适用于构建网络协议、解析二进制数据、处理大流量数据等场景。
主要能力:围绕 Pipe(基于内存缓冲的读写管道)、PipeReader(读取端)、PipeWriter(写入端)和 ReadOnlySequence<T>(非连续内存序列)展开,具备零拷贝、生产者与消费者之间的背压控制、内存池自动复用缓冲、异步 I/O 等特性。
使用方式:创建 Pipe 后并发运行写入与读取任务,用 Task.WhenAll 等待两者完成。写入端通过 writer.GetMemory 获取缓冲、stream.ReadAsync 读取、writer.Advance 通知已写入字节、writer.FlushAsync 刷新并通知读取端,结束时调用 writer.CompleteAsync。读取端循环调用 reader.ReadAsync 获取 ReadResult,处理 result.Buffer 后必须调用 reader.AdvanceTo 通知已消费位置,结束时调用 reader.CompleteAsync。可按行解析:用 buffer.PositionOf((byte)'\n') 定位换行、Slice 切出行并移动缓冲。处理 ReadOnlySequence 时,若 IsSingleSegment 可直接访问 FirstSpan,否则遍历各 segment。网络 I/O 可将 Socket.ReceiveAsync 与 PipeWriter 结合。可通过 PipeOptions 配置内存池、读写调度器、pauseWriterThreshold、resumeWriterThreshold、minimumSegmentSize、useSynchronizationContext 等。
依赖:.NET Core 3.0+ 已包含于 BCL,也可引用 NuGet 包 System.IO.Pipelines(示例版本 9.0.*)。
限制与注意事项:ReadAsync 后必须调用 AdvanceTo;AdvanceTo 之后原 buffer 失效,不可保存 ReadOnlySequence 供后续使用,需要保留数据时应先复制(如 ToArray);Writer 与 Reader 都必须调用 CompleteAsync。资料未提供收费、价格、平台支持范围等更多信息。