【C#】async和await的本质

一般的的函数只有遇到return,throw时调用方会跳出函数,而async修饰的函数则加入了await的情况。

也就是说await可以看做一种变种的return,在调用方线程执行到await时会选择跳出函数,把这个函数的上下文委托给其它线程继续执行。

主线程跳出去后,可以想象新增了两个额外的线程A和B。(主线程我们叫做Main)

Main跳出async修饰的函数后,A线程执行await所等待的函数、B则会阻塞在await所在的位置,等待A返回await的结果好继续执行await之后的内容。

[sc name="note" ]所以异步设计的初衷、并不是彻底抹除阻塞,而是不让主线程阻塞。[/sc]

至于"如何让B阻塞的时间变少"、或者"压根不存在B,让A干完活直接执行await后面的内容"——就是优化的事情了。

给TA充电
共{{data.count}}人
人已充电
编程

【Python】文件处理

2021-12-17 12:48:51

Unity编程软件

【Unity】构建圆角立方体

2022-1-15 2:12:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索