异步执行和同步执行之间的区别是什么?


当前回答

同步执行意味着在单个系列中执行。A - C > B - > - > D。如果您正在调用这些例程,则A将运行,然后结束,然后B将开始,然后结束,然后C将开始,等等。

使用异步执行,你开始一个例程,并让它在后台运行,同时你开始下一个例程,然后在某个时候,说“等待这个完成”。更像是:

开始A->B->C->D->等待A完成

这样做的好处是,当A仍在运行时(在后台,在一个单独的线程上),您可以执行B、C和或D,因此您可以更好地利用资源,减少“挂起”或“等待”。

其他回答

简单地说,异步执行是在后台做一些事情。

例如,如果你想从互联网上下载一个文件,你可以使用同步函数来做这件事,但它会阻塞你的线程,直到文件下载完成。这可能使您的应用程序对任何用户输入都没有响应。

相反,您可以使用异步方法在后台下载文件。在这种情况下,下载函数立即返回,程序继续正常执行。所有的下载操作都是在后台完成的,当你的程序完成时会收到通知。

关于同步执行的“同时”定义(有时会令人困惑),下面是一种理解它的好方法:

同步执行:一个代码块中的所有任务都在同一时间执行。

异步执行:一个代码块中的所有任务都不会同时执行。

简单来说:

同步

你在排队买电影票。在你前面的每个人都买到之前,你不可能买到,在你后面排队的人也一样。

异步

你和很多人在一家餐馆里。你点餐。其他人也可以点他们的食物,他们不需要等你的食物煮好并端上来才可以点餐。 餐厅的工作人员在厨房里不停地做饭、上菜、接单。 人们的食物一做好就会端上来。

你混淆了同步与并联与串联。同步的意思是同时发生所有的事情。同步的意思是彼此相关,可以是串联的,也可以是固定间隔的。当程序在做所有的事情时,它是串联运行的。找本字典……这就是为什么我们有不甜的茶。你有茶或甜茶。

当执行a>b>c>d>这样的序列时,如果我们在执行过程中遇到如下失败:

a
b
c
fail

然后我们从头开始:

a
b
c
d

这是同步的

然而,如果我们有相同的序列要执行:a>b>c>d>,我们在中间有一个失败:

a
b
c
fail

...但我们不是从头开始,而是从失败的地方重新开始:

c
d

...这就是所谓的异步。