并发性和并行性之间的区别是什么?
并发性和并行性之间的区别是什么?
例子表示赞赏。
并发性是指两个或更多任务可以在重叠时间段内启动,运行并完成。 这并不一定意味着他们都会在同一时刻跑步。 例如,在单核机器上进行多任务处理。
并行是当任务实际上同时运行时,例如,在多核处理器上。
引用Sun的多线程编程指南:
并发性:至少有两个线程正在进步时存在的条件。 一种更普遍的并行性形式,可以包括时间分割作为虚拟并行的一种形式。
并行性:至少有两个线程同时执行时出现的一种情况。
我喜欢Rob Pike的话:并发不是并行(更好!)(幻灯片)(说)
Rob通常会谈论Go,通常以直观和直观的解释来解决并发VS并行的问题! 这里是一个简短的总结:
任务:让我们刻录一堆陈旧的语言手册! 一次一个!
并发性:有很多并发的任务分解! 一个例子:
并行性:如果至少有两个Gopher在同一时间工作,则以前的配置并行发生。
为什么存在混淆
存在混淆因为这两个词的字典含义几乎相同:
然而,他们在计算机科学和编程中使用的方式却完全不同。 这是我的解释:
那么上面的定义是什么意思?
我将用现实世界的比喻来澄清。 假设你必须在一天内完成2个非常重要的任务:
现在,问题在于任务1要求你去一个极其官僚的政府办公室,让你排队等4个小时才能拿到护照。 同时,你的办公室需要任务2,这是一项关键任务。 两者都必须在特定的一天完成。
案例1:顺序执行
通常情况下,你将开车到护照办公室2小时,排队等待4小时,完成任务,开车返回两个小时,回家,再离开5个小时,完成演示。
情况2:并发执行
但你很聪明。 你提前计划。 你随身携带一台笔记本电脑,在等待排队时,你开始处理演示文稿。 这样,一旦你回到家中,你只需要增加1小时而不是5。
在这种情况下,这两项任务都是由你完成的,只是分段完成。 你在排队等待期间中断了护照任务,并进行了演示。 当你的号码被呼叫时,你中断了演示任务并切换到护照任务。 由于这两项任务的可中断性,节省时间本质上是可能的。
在数据库的ACID属性中,并发性应视为“隔离”。 如果以任何交错方式在每个事务中执行子事务,并且最终结果与两个任务连续完成相同,则两个数据库事务满足隔离要求。 请记住,无论是护照和演示任务,你都是唯一的execution子手。
案例3:并行执行
现在,既然你是一个聪明的家伙,你显然是一个更高级的人,而且你有一个助手。 所以,在你离开开始护照任务之前,你打电话给他,并告诉他准备演示文稿的初稿。 你花了整整一天的时间完成护照任务,回来看看你的邮件,并找到演示稿。 他已经完成了一项非常稳定的工作,并且在2个小时内完成了一些编辑工作,最终确定完成。
现在,您的助理和您一样聪明,他可以独立工作,无需不断向您询问澄清情况。 因此,由于任务的独立性,它们由两个不同的execution子手同时执行。
还在我这儿? 好的...
案例4:并行但不平行
记住你的护照任务,你必须等待排队吗? 由于这是您的护照,您的助理不能排队等候您。 因此,护照任务具有中断能力(您可以在排队等待时停止它,并在您的号码被呼叫时稍后恢复),但没有可独立性(您的助手不能等待替代)。
案例5:并行但不并行
假设政府办公室有进入房屋的安全检查。 在这里,您必须移除所有电子设备并将其提交给管理人员,并且他们只在完成任务后才返回设备。
在这种情况下,护照任务既不可独立也不可中断。 即使你在排队等待,你也无法处理其他事情,因为你没有必要的设备。
同样,如果说演示文稿的数学性质非常高,那么至少需要5个小时才能达到100%的浓度。 即使您携带笔记本电脑,也无法在等待护照任务时执行此操作。
在这种情况下,演示任务是可独立的(无论是你还是你的助理都可以投入5小时的精力),但不能中断。
案例6:并行和并行执行
现在,除了将你的助手分配给演示文稿之外,你还可以携带笔记本电脑与护照任务。 在等待排队时,你会发现你的助理已经在共享卡组中创建了前10张幻灯片。 您通过一些更正发送评论。 之后,当你回到家时,而不是2个小时来完成选秀,你只需要15分钟。
这是可能的,因为演示任务具有可独立性(你们中的任何人都可以做到)和可中断性(您可以停止并在以后继续)。 所以你同时执行了两个任务,并行执行了演示任务。
比方说,除了过于官僚,政府办公室是腐败的。 因此,您可以显示您的身份,输入密码,开始排队等候您的号码,贿赂警卫和其他人来保持您的位置,偷偷摸摸,在您的号码被叫之前回来,然后重新开始等待你自己。
在这种情况下,您可以同时并行执行护照和演示任务。 你可以溜出去,你的位置由你的助手保存。 然后,你们两人都可以参与演示等。
回到计算机科学
在计算世界中,下面是每种情况的典型场景:
并发和去
如果你明白Rob Pike为什么说并发性更好,你必须明白原因。 你有一个很长的任务,其中有多个等待期间,你等待一些外部操作,如文件读取,网络下载。 在他的演讲中,他所说的只是“分手这个长期的顺序任务,这样你就可以在等待的时候做一些有用的事情。”这就是为什么他会与各种地鼠讨论不同的组织。
现在去的力量来自于使这个破真的很容易go
的关键字和渠道。 此外,运行时还有很好的基础支持来安排这些goroutines。
但从本质上讲,并行性是否更好?
苹果比橘子更受欢迎吗?
链接地址: http://www.djcxy.com/p/245.html上一篇: What is the difference between concurrency and parallelism?