计算机中 什么是同步执行和异步执行?

1

当您同步执行某项任务时,您将等待它完成,然后再转到另一项任务。当您异步执行某项任务时,您可以在它完成之前转移到另一个任务。

也就是说,在计算机的上下文中,这转化为在另一个“线程”上执行一个进程或任务。线程是作为工作单元存在的一系列命令(代码块)。操作系统可以管理多个线程,并在切换到另一个线程之前为线程分配一块(“片”)处理器时间,以使它能够完成一些工作。在其核心(请原谅双关语),一个处理器可以简单地执行一个命令,它没有一次做两件事的概念。操作系统通过将时间片分配给不同的线程来模拟这种情况。

现在,如果在混合中引入多个核/处理器,那么事情实际上可以同时发生。操作系统可以将时间分配给第一个处理器上的一个线程,然后将相同的时间块分配给不同处理器上的另一个线程。所有这些都是关于允许操作系统管理您的任务的完成,而您可以继续您的代码和做其他事情。

2

同步/异步与多线程无关。

同步,或同步意思是“连接”,或“依赖”在某种程度上。换句话说,两个同步任务必须彼此了解,一个任务必须以依赖于另一个任务的方式执行,例如等到另一个任务完成后才开始。

异步意味着它们是完全独立的,无论是在初始化还是在执行中,两者都不能以任何方式考虑另一个。

同步(一个线程)1 thread ->   |<---A---->||<----B---------->||<------C----->|

同步(多线程):



thread A -> |<---A---->|   

                        \  

thread B ------------>   ->|<----B---------->|   

                                              \   

thread C ---------------------------------->   ->|<------C----->| 

异步(一个线程):



         A-Start ------------------------------------------ A-End   

           | B-Start -----------------------------------------|--- B-End   

           |    |      C-Start ------------------- C-End      |      |   

           |    |       |                           |         |      |

           V    V       V                           V         V      V      

1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 

异步(多线程):



 thread A ->     |<---A---->|

 thread B ----->     |<----B---------->| 

 thread C --------->     |<------C--------->|

任务A、B、C的起点和终点<, >人物。

用竖直条表示的CPU时间片|

从技术上讲,同步/异步的概念真的与线程无关。虽然在一般情况下,发现异步任务运行在同一个线程上是不寻常的,但它是可能的(参见下面的示例),而且它是共同查找两个或多个任务同步执行的步骤分开线.。不,同步/异步的概念独树一帜是否可以在其他(第一个)任务完成之前启动第二个或后续任务,或者是否必须等待。仅此而已。在哪些线程(或多个线程)、进程、CPU,或者确切地说,任务是在什么硬件上执行的任务是无关的。事实上,为了说明这一点,我编辑了图形以显示这一点。

异步示例。在解决许多工程问题时,软件被设计成将整个问题分成多个单独的任务,然后异步执行。反演矩阵或有限元分析问题是一个很好的例子。在计算中,列表排序就是一个例子。例如,快速排序例程将列表分成两个列表,并通过递归调用自己对每个列表进行排序。在上述两个示例中,这两个任务可以(而且经常是)异步执行。它们不需要放在单独的线程上。即使是只有一个CPU的机器,也只能编码一个执行线程,以便在第一个任务完成之前启动第二个任务的处理。唯一的标准是一个任务的结果不需要作为另一个任务的输入。。只要任务的开始时间和结束时间重叠(只有当两个任务的输出都不需要作为另一个任务的输入时才有可能),无论使用多少线程,它们都是异步执行的。

同步示例。任何由多个任务组成的进程,其中的任务必须按顺序执行,但必须在另一台机器上执行(获取和/或更新数据,从金融服务获取股票报价等)。如果它位于一个单独的机器上,那么它就位于一个单独的线程上,无论是同步线程还是异步线程。

3

简单类比解释
同步执行

我的老板是个大忙人。他让我写代码。我告诉他:好吧。我开始了,他像秃鹰一样看着我,站在我身后,从我的肩膀上下来。我说:“伙计,WTF:为什么你不去做点什么,而我做完这件事呢?”

他说:“不,我.在这里等着直到你完成。“这是同步的。

异步执行

老板告诉我去做,而不是在那里等我的工作,老板去做其他的工作。当我完成我的工作后,我只需向我的老板汇报并说:“我受够了!”这是异步执行。

(听我的建议:永远不要和你身后的老板一起工作。)

参考文章:异步执行与同步执行,这到底意味着什么?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值