我们如何知道一个IO是阻塞的还是非阻塞的?

本文关键字:是非 IO 一个 何知道 我们 | 更新日期: 2023-09-27 18:14:31

阅读c#文档,我想知道如何知道IO是否阻塞。例如BinaryWriter。写方法,我在文档中找不到任何关于方法是否阻塞的信息。

我们如何知道一个IO是阻塞的还是非阻塞的?

BinaryWriter.Write仅在其工作完成时返回。这就造成了阻塞。等待时间可能是无限的。

异步方法通常很容易发现,因为它们返回TaskIAsyncResult(这对应于旧的APM模式)。它们也被适当地命名(BeginXxxXxxAsync)。当这样的方法返回时,您还没有得到结果。这表明计算仍未完成。

文档调用异步方法的这个属性。因为几乎所有的方法都是阻塞和同步的(例如所有的字符串方法),所以文档中没有注意到这种行为。

由于它不提供BeginWrite及其相应的EndWrite方法,因此它必须是阻塞的。