对于异步的理解。html
以前对于同步方法和使用async、await的异步方法一直很迷惑。web
我以为等待执行结果的异步和同步方法有什么区别吗?编程
他们的执行顺序都是同样的啊?服务器
不是都须要等待执行结果吗?网络
今天翻了一下《C#高级编程》,才算搞清楚这里面的差别,原来使用了async、await的异步是不会阻塞线程的。异步
首先说说关于同步方法和异步方法的区别。async
好比说web网站加载一些网络资源,是使用同步方法请求,那么此时web网站的用户界面将会阻塞,直到该方法完成对资源的网络调用,并完成结果分析。网站
完成这些调用所需的时间取决与网络速度,以及服务器当前的工做量。线程
对于用户来讲,界面卡掉、一段时间的等待都是不愉快的。htm
因此使用异步调用。
异步能够避免阻塞,在此期间能够作更多的事情。
可是异步有一个缺陷,相对于同步来讲,它对于程序的流程充满了不肯定性,顺序可能会颠倒。
因此在某些场景,好比说有多个异步方法被调用,他们是有依赖关系的,后面的异步方法须要使用到以前异步方法的结果,咱们须要按顺序调用这些异步方法,这个时候就须要使用async、await关键字来等待执行的结果,可是它不会阻塞线程。
本文来自 木庄网络博客> 扫盲-对异步的理解