同步和异步通信的工作原理是什么?

22

我试图理解同步和异步通信的术语,但我有些困惑。我尝试在这里深入了解,但仍然有些疑惑。我的问题如下:

1.同步和异步通信是如何工作的?还涉及上述异步通信使用的信号。

2.同步和异步过程是如何工作的?

任何举例说明都将有所帮助。

如果这是一个非常简单的问题,我表示歉意,我是编程新手。希望您的答案能帮助我。谢谢!

2个回答

101

电话联系是同步的。通过邮件与他人交流是异步的。


同步

当我给你打电话时,我拨打你的号码并等待直到你接听。然后你说话,在那一瞬间我就可以听到你的声音。当你讲完后,我向你发送数据(与你交谈),在同一时间,你也能接收到这些数据(听我说话)。在我们通信结束时,其中一个人会说“传输结束”(再见),另一个人则回答“已确认”(再见),然后我们都挂断电话。


异步

我写了一封信给你。我把它放到邮局里,然后它就被发送给了你。在此期间,我不需要等待。我可以做许多其他的事情。然后你收到了这封信。你读信的时候,我还在忙其他的事情。然后你回信给我并将其发送给我。在这些事情中,我并没有参与其中。第二天我会从系统(邮递员)获得一条(同步的)消息(信号)。它(他)会说:“这里有一条信息给你”。或者我可以每五分钟轮询我的收件箱,以检查是否有新的信件。然后我暂停其他工作,接收你的信并阅读你的回复。然后我会根据这个答案做出一些事情。但这些是你不会注意到的事情,因为你不知道我在做什么。


1
谢谢您的帮助,让我更好地理解它们之间的区别并知道该使用哪一个。 - user1189352
实际上,我认为这个答案是针对面向连接和无连接通信的。 - lenhhoxung
我喜欢这个比喻,但在异步模式下,如果有很长一串的'A'和'B',我怎么知道它们之间的区别。更具体地说,如果我以9600波特率传输,每个位应该持续大约104微秒,但不完全相同。如果我一直以104微秒的速度采样,我会不会最终失去同步?我是否使用停止位和起始位来重置我的计时器? - Lpaulson
1
@Lpaulson:这与问题无关。您正在谈论使用给定频率同步二进制数据的问题。但是,问题是关于在计算机语言中调用方法和函数的。信息如何编码和发送对于同步/异步通信是无关紧要的。电话交谈和写纸质信件不仅仅是类比。它们确实是这些通信方式的例子。打电话给某人是同步通信,但没有需要同步的位。 - Hubert Schölnast
1
很棒的解释 :) - Sudip Das

18

同步(synchronous) 指在你的代码发送消息、调用函数等操作时,会一直阻塞直到接收到回复、返回值等。

异步(asynchronous) 指在你的代码发送消息、调用函数等操作后,会继续执行,通常会传递一个回调函数的引用,在答案到达时执行该函数(这可能需要一小时、几天或数年),而你的主线程在此期间将继续执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接