我自己对于异步方法的理解,着重于对于各个线程是怎么调度的理解,关于具体代码编写方面和细节讲述是没有的,以下内容如有错误,还请指正。
假设有两个命令调用,命令一和命令二,它们都在主线程。
假设有六个方法。方法一、二、三、四、六都是普通方法,且内部只有一个普通代码语句。方法五是异步方法,其内部有三个代码语句,语句一、三都是普通语句,语句二是带有await标识符的特殊语句,因为它是个耗时操作。
命令一对应方法一、二、三 , 命令二对应方法四、五、六。
命令一启动:
主线程
运行方法一中的语句一
运行方法二中的语句一
运行方法三中的语句一
执行结束
这是普通方法的运行规律,简单易懂。
命令二启动:
主线程 新开辟的线程
运行方法四中的语句一
运行方法五中的语句一
运行方法五中的语句二 ,将方法五在主线程挂起, --------------------> 在新开辟的线程中运行语句二所代表的耗时操作
不再执行方法五内语句二之后的代码 |
|
运行方法六中的语句一 |
| 等 | 等
| |
| |
| |
| |
| |
| 待 | 待
运行方法五中的语句三 <-------------------- 方法五的语句二运行结束,重新恢复主线程中方法五的语句三的运行。
执行结束
总之,根据我自己的粗略测试,执行过程的确如此,如有错误,敬请指正。