concurrency - 并发和并行之间的区别
问题描述
有人说:
并发就像一个人只用一只手玩杂耍。不管看起来如何,这个人一次最多只能拿着一个球。平行是指杂耍者使用双手。
我理解主要假设。
但是有人可以参考吗?
我是说:
球 - 线程?
手 - 过程/核心?
人 - 处理器/核心?
我知道这是一个奇怪的问题,但我相信它可以解决关于这个主题的基本观点。
EDIT
根据您的回答,我必须说我有点困惑。
我认为人是一个过程。
这个进程可能有很多线程。
不管电脑是单核还是多核。
所以一只手就是一个核心。
所以球是线。而这个核心一次只能处理一个线程。
如果有一个单核处理器和一个以上的线程,则可能存在并发。
线程在彼此之间切换。但一次只有一个线程工作。
如果有一个多核处理器和许多线程,每个线程可以由每个核分别完全同时完成,因此存在并行性。
你怎么看?
解决方案
我的理解是你要求技术。我发现这是一个很好的解释:
Here's a visual example. Threads on a non-threaded machine:
-- -- --
/ \
>---- -- -- -- -- ---->>
Threads on a threaded machine:
------
/ \
>-------------->>
如果你喜欢gedamial的回答 - 给他一些爱吧!
推荐阅读
- node.js - 从后端接收数据返回未定义
- c++ - 没有匹配函数调用“...”涉及模板化函数的编译器错误
- android - Android 日期选择器对话框上下文参数
- castle-windsor - Castle Windsor container.Resolve 产生空引用异常
- asp.net-core - 使用 Microsoft.Identity.Web 将 Asp.Net Core 2.2 升级到 3.1 - 没有为方案“AzureADJwtBearer”注册身份验证处理程序
- javascript - Discord.js 错误:TypeError:无法读取未定义的属性“通道”
- docker - 如何在不为每个 es 节点声明服务的情况下在 docker swarm 上部署 elasticsearch?
- angular6 - 使用加密令牌查询参数 angular 10
- python - NQueens - 递归回溯问题
- terraform - Handling null with for_each