我正在处理一个执行大量异步读取的应用程序。为了提高性能,我想直接对Read
from 进行同步调用,SslStream
前提是调用不会阻塞。
它SslStream
本身并不DataAvailable
像底层NetworkStream
那样提供属性。
那么,鉴于我知道它是一个正在读取的包装网络流,是否会true
保证DataAvailable
对 的调用SslStream
不会导致阻塞?
像这样:
public void Read(NetworkStream netStream, SslStream sslStream)
{
// given that netStream is the inner stream of sslStream
if (netStream.DataAvailable)
{
// Will not block
sslStream.Read(...);
}
else
{
// Would block
sslStream.Read(...);
}
}
SslStream
已经过身份验证并准备就绪。我不确定除了加密/解密之外是否还有其他开销。我认为答案取决于是否SslStream
需要从底层流中读取超过一个字节才能读取一个加密字节。