await 会从线程池中另起一个线程来执行任务,而线程池的管理是交由我们的Task去控制的
2条回答 默认 最新
- wanghui0380 2022-08-25 15:56关注
为啥又是await跟task纠结的
async/await----------------这才是一对啊。
异步IO和等待,他只是启动了一个异步IO动作,等待系统IO管理器异步完成IO,等完成IO以后通知从线程池里挑选一个状态为Complate的线程执行回调动作
那么假设是某园子吹的IOCP,他等待的是网络IO,他不启动线程,他只是发起了一个 windows IOCP 的IRQ请求,等这个异步请求执行完毕,系统通过软中断唤醒,然后他在从线程池里调个空闲线程把消息回调给你
当然 如果你是 await Task.Run(),这类才算启动了一个线程
总结:异步不必线程(如果是驱动级异步IO无需线程),线程不必异步(如果你不需要去拿结果,那么你大可以不必管他,他执行完毕线程自然消亡)
另外:池和本题毫无关系,池是背压控制手段。因为手上一旦有锤子,看啥都是钉子。所以设计师们会强行约束你的行为,控制背压。不让你看啥都去线程,设计师得约束你进水,出水大致相当(小学题目,一管进水,一管出水,请问多长时间池子满/空,池的目的也就是如此,当你开始看啥都是线程的时候,官方就得提醒你池满了,请不要在放水了)
解决 无用评论 打赏 举报
悬赏问题
- ¥15 做一个简单项目,用Python分析共享单车的数据
- ¥20 在使用CESM2.2.0模型进行case.submit过程中出现如下错误(关键词-Map)
- ¥15 有办法改变通过wifi进入的网站的设置吗
- ¥15 所以到底怎么算!算到凌晨五点都算不出来!
- ¥15 label_studio
- ¥15 请教如何phython发邮件
- ¥15 linux系统安装问题
- ¥15 路径规划如何采用矢量法让他们尽量在一个方向
- ¥15 crypto 一道rsa解密题
- ¥15 survIDINRI已将生存时间转为数值变量,仍错误 Time variable is not numeric。