并发与并行性之间的区别

时间:2019-02-05 14:05:10

标签: concurrency parallel-processing

有人说:

  

并发就像一个人只用一只手在玩弄。不管这个人看起来一次最多只握一个球。并行是指杂耍者用双手的时候。

我了解主要假设。

但是有人可以参考吗?

我的意思是:

球-螺纹?

手-过程/核心?

人-处理器/核心?

我知道这是一个奇怪的问题,但我相信它可以解决有关该主题的基本观点。

EDIT

根据您的回答,我必须说我有点困惑。

我认为这个人是一个过程。

此过程可能有很多线程。

无论计算机是单核还是多核。

因此,一只手将是一个核心。

所以球是螺纹。而且该内核一次只能处理一个线程。

如果有一个单核处理器和一个以上的线程,则可能存在并发性。

线程在彼此之间切换。但是一次只能有一个线程。

如果有一个多核处理器和多个线程,则每个线程可以由每个内核完全同时精确地完成,因此存在并行性。

您怎么看?

2 个答案:

答案 0 :(得分:0)

我的理解是您正在要求技术。 我发现这是一个很好的解释:

What is the difference between concurrent programming and parallel programming?

Here's a visual example. Threads on a non-threaded machine:

        --  --  --
     /              \
>---- --  --  --  -- ---->>
Threads on a threaded machine:

     ------
    /      \
>-------------->>

如果您喜欢gedamial的答案,请给他一些爱!

答案 1 :(得分:0)

并发是一种设计,程序可以继续运行而无需评估任务,直到某个特定时刻为止,
并行是此设计的一种实现,另一种常见的实现是上下文切换,
这是一项设计考虑,您可以安全地假设任务的结果将是非阻塞的。

在这个比喻中,手是执行程序的线程,球是正在执行的任务,人是正在运行的进程。
一个人用一只手玩弄的例子是上下文切换,您可以在一个流程中的各个任务之间进行切换,这将使他可以同时处理多个任务,但最终他一次最多只能握一个球
使用秒针是一种实现方式,其中他使用第二个线程(手)同时处理两个任务。

这是一篇非常简单的文章,解释了这个概念 https://www.quora.com/What-is-the-difference-between-concurrency-and-parallelism