是否可以反序列化一个 Web 响应,因为它与 Jil 成块出现而没有线程阻塞?

Can one deserialize a web response as it comes in chunks with Jil without thread blocking?

就挂钟时间而言,逐块反序列化 Web 响应是免费的,因为等待块的时间通常比反序列化时间长得多。但是,现有的解决方案:

var streamReader = new System.IO.StreamReader(responseStream);
var deserialized = Jil.JSON.Deserialize<Result>(streamReader);

阻塞线程直到响应完成,这在高并发场景下会导致系统卡顿。要将 Jil 与异步响应读取一起使用,我们需要像

这样的东西
var chunkDeserializer = new JilChunkDeserializer<Response>();    
chunkDeserializer.Consume(buffer, offset, length); //with baked-in string encoding
//chunkDeserializer.Consume(stringChunk); alternative with one extra allocation per chunk

with var deserialised = chunkDeserializer.Finalize() 在所有数据写入后调用。吉尔有类似的东西吗?如果没有,是否可以实施?适度的性能损失将毫无意义,因为它被块等待时间吸收了。

Jil 目前无法做到这一点,它只能反序列化完整的 JSON 文档。

假设地说:我不确定这实际上是否会更快,因为 Jil 在 运行 没有输入时必须能够隐藏其状态(以便随后恢复)。现在大部分状态都在堆栈上,将其移出到堆中可能会在运行时花费比您节省的更多。