使用“异步”时,为什么使用“等待”

问题描述 投票:0回答:1

我们使用术语“异步”来允许代码流继续运行而不会阻塞主流。还行吧。我们希望主流继续发展,而无需等待该过程完成。但通常,“异步和等待”一起使用。

我的问题是;当我们添加“ await”时,我们期望代码流中的“异步”状态。在这种情况下,我不了解使用“异步”有什么好处?有人可以解释一下,谢谢你,好工作。

asynchronous android-asynctask async-await synchronization
1个回答
0
投票

您所指的是哪种技术尚不清楚。我假设您所指的是最近几年已添加到多种语言的asyncawait关键字。

在那种情况下,此陈述实际上是不正确的:

我们使用术语“异步”来允许代码流继续运行而不会阻塞主流。

在C#,JavaScript,Python,F#和Visual Basic中,async关键字不会not异步起作用。它有两个作用:

  1. 在该方法/ lambda中启用await关键字。
  2. 将该方法/ lambda转换为状态机。

所以async是不是[[not”的意思是“在后台线程上运行此代码”或类似的东西,这是一个常见但不正确的假设。

上面的第一点对于向后兼容很重要。这些语言中的每一种都使用await作为上下文关键字,因此,如果程序中的文本“ await”是用async标记的方法,则该文本仅是关键字。这样一来,这些语言就可以在不破坏任何现有代码的情况下引入新的关键字(例如,使用await作为变量名的某人的代码)。

请参阅我的this post,它最初是为C#/ VB设计的,因此收集了很多有关关键字的讨论。这些相同的设计决策也几乎完全采用了其他语言,因为它们也采用了关键字。从该帖子链接的资源之一是Eric Lippert's post,说明为什么除了async关键字之外还需要await关键字。

© www.soinside.com 2019 - 2024. All rights reserved.