繁体   English   中英

async / await对IO操作做了什么?

[英]What does async / await do on IO operations?

假设样本片段:

public async void writeDataOnFile (byte[] data, string filePath) {
   using(var fs = new FileStream(filePath)) {
      await File.WriteAsync(data,0,data.length);
   }
}

我知道线程池没有使用后台线程,但是将启动IO操作并在最后通知线程。

问题是:async / await如何理解WriteAsync是一个IO绑定方法而不是CPU绑定方法?

任何帮助,将不胜感激。

问题是:async / await如何理解WriteAsync是一种IO方法而不是CPU方法?

await关键字不关心它是IO还是CPU绑定。 它所关心的只是“呼叫”是等待的。 请看这里了解更多详情。

请参阅下面的示例,其中extension方法返回TaskAwaiter

public static class ThisWorks
{
    public static System.Runtime.CompilerServices.TaskAwaiter GetAwaiter(this Int32 millisecondsDue)
    {
        return TimeSpan.FromMilliseconds(millisecondsDue).GetAwaiter();
    }

    private static System.Runtime.CompilerServices.TaskAwaiter GetAwaiter(this TimeSpan timeSpan)
    {
        return Task.Delay(timeSpan).GetAwaiter();
    }
}

现在使用我们可以这样做:

await 15;

有更好的例子,但至少这表明了这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM