首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果异步等待不创建任何额外的线程,那么它如何使应用程序响应?

如果异步等待不创建任何额外的线程,那么它如何使应用程序响应?
EN

Stack Overflow用户
提问于 2018-03-26 06:03:20
回答 2查看 0关注 0票数 0

async-await不会创建任何额外的线程,这是没有意义的,因为一台计算机一次不止做一件事情的唯一方法是

  • 实际上一次做多件事情(并行执行,使用多个处理器)
  • 通过调度任务并在它们之间切换来模拟它(做一点点A,一点B,一点点A,等等)。

所以如果async-await这两者都没有,那么它如何使应用程序响应呢?如果只有一个线程,那么调用AnyMethod意味着在执行其他任何操作之前等待方法完成,而该方法中的方法必须等待结果才能继续执行。

EN

Stack Overflow用户

发布于 2018-03-26 15:43:34

计算机一次做多件事情的唯一方法是(1)一次做多件事情,(2)通过调度任务并在它们之间切换来模拟它。所以如果异步等待没有这两个

记住,await不是使同步代码神奇地异步。是为了让使用我们在调用异步代码时使用的编写同步代码的相同技术。等待是关于使使用高延迟操作的代码看起来像使用低延迟操作的代码,这些高延迟操作可能在线程上,它们可能在特殊用途的硬件上,它们可能将它们的工作撕成小块,并将其放入消息队列中,以便稍后由UI线程处理。他们在做某物实现异步,但是他们就是那些在做这件事的人。等待只是让你利用这个异步。

没有多CPU机器,也没有线程调度程序。你想同时运行两个Windows应用程序。多任务处理合作,操作系统告诉一个进程它可以运行,如果它的行为不正常,它会让所有其他进程都无法得到服务。不得不知道如何在下一次OS手动控制到它的时候找到它停止的地方。单线程异步代码非常类似,使用的是“等待”而不是“屈服”。

调用任何方法都意味着等待方法完成。

这就是异步的本质所在,一个方法返回,它返回一个任务,这意味着“这项工作正在进行中,当它完成时告诉我该做什么”。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档