有人说:
并发就像一个人只用一只手在玩弄。不管这个人看起来一次最多只握一个球。并行是指杂耍者用双手的时候。
我了解主要假设。
但是有人可以参考吗?
我的意思是:
球-螺纹?
手-过程/核心?
人-处理器/核心?
我知道这是一个奇怪的问题,但我相信它可以解决有关该主题的基本观点。
EDIT
根据您的回答,我必须说我有点困惑。
我认为这个人是一个过程。
此过程可能有很多线程。
无论计算机是单核还是多核。
因此,一只手将是一个核心。
所以球是螺纹。而且该内核一次只能处理一个线程。
如果有一个单核处理器和一个以上的线程,则可能存在并发性。
线程在彼此之间切换。但是一次只能有一个线程。
如果有一个多核处理器和多个线程,则每个线程可以由每个内核完全同时精确地完成,因此存在并行性。
您怎么看?
答案 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