【发布时间】:2020-12-30 01:16:38
【问题描述】:
我正在研究使用管道处理来自网络的二进制消息的可能性。 我将要处理的二进制消息带有一个有效负载,最好将有效负载保持为二进制形式。
这个想法是读出整个消息并创建一个消息片段及其有效负载,一旦消息被完全读取,它将被传递到通道链进行处理,处理不是即时的,可能需要一些时间或者稍后执行,目标是不让管道读取器等待直到处理完成,然后一旦消息处理完成,我需要将处理后的缓冲区释放给管道写入器。
现在我当然可以创建一个新的字节数组并复制来自管道写入器的数据,但这会超出不复制的目的吗?所以据我所知,我需要管道和通道之间的一些缓冲区同步? 我观察了管道读取器的可用 api (AdvanceTo),它可以告诉管道读取器消耗了什么以及检查了什么,但无法解决如何在管道读取方法之外同步它。
所以问题是是否有一些技术或示例说明如何实现这一点。
【问题讨论】:
标签: c# system.threading.channels system.io.pipelines