首页 > 解决方案 > 并发和并行之间的区别

问题描述

有人说:

并发就像一个人只用一只手玩杂耍。不管看起来如何,这个人一次最多只能拿着一个球。平行是指杂耍者使用双手。

我理解主要假设。

但是有人可以参考吗?

我是说:

球 - 线程?

手 - 过程/核心?

人 - 处理器/核心?

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

EDIT

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

我认为人是一个过程。

这个进程可能有很多线程。

不管电脑是单核还是多核。

所以一只手就是一个核心。

所以球是线。而这个核心一次只能处理一个线程。

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

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

如果有一个多核处理器和许多线程,每个线程可以由每个核分别完全同时完成,因此存在并行性。

你怎么看?

标签: concurrencyparallel-processing

解决方案


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

并发编程和并行编程有什么区别?

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

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

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

如果你喜欢gedamial的回答 - 给他一些爱吧!


推荐阅读