并发和并行之间的区别是什么?


当前回答

并发:如果一个处理器解决了两个或多个问题。

并行性:如果一个问题由多个处理器解决。

其他回答

并发可以涉及同时运行或不同时运行的任务(它们确实可以在单独的处理器/内核中运行,但也可以在“滴答声”中运行)。重要的是,并发总是指完成一项更大任务的一部分。所以基本上这是一些计算的一部分。你必须聪明地知道你可以同时做什么,不可以做什么,以及如何同步。

并行性意味着你只是同时做一些事情。他们不需要参与解决一个问题。例如,您的线程可以分别解决一个问题。当然,同步的东西也适用,但从不同的角度来看。

要补充其他人所说的话:

并发性就像让一个玩杂耍的人玩多个球。不管看起来如何,玩杂耍的人每次只手抓/扔一个球。平行运动是让多个杂耍者同时变戏法。

想象一下,通过观看视频教程学习一种新的编程语言。你需要暂停视频,应用代码中所说的内容,然后继续观看。这就是并发性。

现在你是一名职业程序员了。你喜欢在编码时听平静的音乐。这就是平行主义。

正如Andrew Gerrand在GoLang博客中所说

并发是指同时处理许多事情。相似一次做很多事情。

享受

太好了,让我用一个场景来展示我的理解。假设有三个孩子:A,B,C。A和B说话,C听。对于A和B,它们是平行的:A: 我是A。B: 我是B。

但对于C来说,他的大脑必须同时进行听A和B的过程,这可能是:我是我A是B。

通过查阅字典,你可以看到并发(来自拉丁语)意味着一起运行、聚合、同意;因此,需要同步,因为在相同的资源上存在竞争。平行(来自希腊语)的意思是在侧面复制;从而在同一时间做同样的事情。