AFAIK - (我读了很多关于它的内容),存在异步方法(不是异步委托!)在处理I/O 操作时解决“线程被阻塞”问题,例如:读取文件或下载文件:
Richter 在这里非常清楚地表明了这一点:
Task<T>
与 i/o 阻塞问题无关。它就像打开一个线程(加上额外的效率+功能) - 但它仍然会导致线程消耗 cpu quanta 等。
这是我的问题:
我读过(msdn):
异步方法提供了一种方便的方法来完成可能长时间运行的工作,而不会阻塞调用者的线程。异步方法的调用者无需等待异步方法完成即可恢复其工作。
它就像创建一个
Task<t>
withContinueWith
吗?术语不是很混乱吗?
asynchronous methods
用于i/o
操作(在进行 i/o 操作时有零个线程在等待,并且没有线程在处理它)。但是 将代码(使用异步)称为:asynchronous methods
有点令人困惑。你不觉得吗?因为我假设有另一个线程正在执行......(实际上这是我的第一个问题)。
哪里来的混乱?
因为Albahari 倾向于强调异步方法的用途:
ps我在SO上阅读了一些关于这个主题的问题,但没有发现任何关于异步方法在这里处理io操作的错误分类