Yan*_*hof 1 .net c# async-await
我试着理解为什么使用'Async'方法比使用简单的旧同步方法更好.
我不明白有一个小问题.
在同步方式:
FileStream.Read(...). 在A同步方式:
TheadAsync01调用方法的线程(Task ..让我们调用这个线程')FileStream.ReadAsync(...). 现在,当IRP发出信号表示此IO请求已完成时发生了什么?
(线程TheadAsync01现在正在做其他事情,无法继续使用' FileStream.ReadAsync'返回现在的工作.)
是其他线程会继续继续下一个动作的返回值ReadAsync吗?
我在这里不明白的是什么?
它困扰你的原因是这个错误的假设:
线程TheadAsync01现在正在做其他事情,无法继续使用'FileStream.ReadAsync'返回的工作.
在典型的应用程序中,I/O是迄今为止最耗时的任务.
正确使用TPL时,线程不会被耗时的操作阻塞.相反,所有耗费时间(换句话说,任何I/O)都是通过委托进行的await.因此,当您的IRP发出信号时,线程将无法工作,或者很快就会免费.
如果有一些繁重的计算(耗费时间而不是 I/O),则需要进行相应的计划,例如在专用线程上运行它.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |