是否有可能确定从SecureStream读取是否会阻塞



我可以确定从SecureStream读取单个字节是否会阻塞吗?底层流是一个NetworkStream,它具有DataAvailable属性,但我期望SecureStream需要缓冲字节才能正确操作,所以我认为我不能依赖底层流的DataAvailable

或者,是否有任何方法来执行Read,永远不会阻塞?我很确定没有;我一直讨厌这个关于Stream API,但也许我错过了什么?

为什么:我们有一个TCP服务器实现与高度优化的路径来处理请求。特别是,原始代码总是对每个请求使用BeginRead,但是我发现,只要数据已经可用(短请求总是发生这种情况),就用Read替换它,将我们的最大吞吐量提高了20%以上。我想对这段代码的SSL变体做同样的事情。

我想知道为什么Read在数据可用时比BeginRead快得多。不应该那么激烈。

您可以查看底层流的可用数据,如果它超过几个字节,您可以假设数据可用并使用Read。否则,请使用BeginRead。为了安全起见,请将ReadTimeout设置为毫秒,这样您就不会在错过时长时间阻塞

但是我认为真正的问题是为什么BeginRead在第一个地方更慢。

相关内容

  • 没有找到相关文章

最新更新