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


当前回答

同步操作在返回调用方之前完成其工作。

异步操作在返回调用方之后完成(大部分或全部)工作。

其他回答

同步是指调用方等待响应或完成,异步是指调用方继续执行并且稍后出现响应(如果适用的话)。

举个例子:

static void Main(string[] args)
{
    Console.WriteLine("Before call");
    doSomething();
    Console.WriteLine("After call");
}

private static void doSomething()
{
    Console.WriteLine("In call");
}

这将总是输出:

Before call
In call
After call

但如果我们要使doSomething()异步(有多种方式来做它),那么输出可以变成:

Before call
After call
In call

因为进行异步调用的方法将立即继续执行下一行代码。我之所以说“可能”,是因为异步操作无法保证执行顺序。它也可以作为原始文件执行,这取决于线程计时等。

同步的不同英文定义在这里

协调;结合。

我认为这比“同时发生”的定义更好。这也是一个定义,但我不认为它适合计算机科学中使用的方式。

因此异步任务不与其他任务协同,而同步任务与其他任务协同,因此一个任务在另一个任务开始之前完成。

如何实现这一点是另一个问题。

类比简单解释

(故事和图片帮助你记住)。

同步执行

我老板是个大忙人。他让我写代码。我告诉他:好吧。我一开始,他就像秃鹰一样盯着我,站在我身后,躲在我肩上。我说:“伙计,你干嘛不去做点什么,我把这个做完?”

他会说:“不,我就在这儿等你做完。”这是同步的。

异步执行

老板让我去做这件事,而不是在那里等我的工作,老板离开去做其他的事情。当我完成我的工作时,我简单地向我的老板报告并说:“我完成了!”这就是异步执行。

(听我的建议:永远不要在老板背后工作。)

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

同步是指以队列方式逐一执行任务。假设只有一辆车需要在朋友之间共享才能到达目的地,一辆车将被共享。 在异步情况下,每个朋友都可以租到车并到达目的地。