理解并发和并行

1. 逻辑控制流

程序的指令执行的一系列逻辑控制流程,就叫做逻辑控制流,或者简称逻辑流

如下图,一个运行着三个进程的系统,处理器的一个物理控制流程被分成三个逻辑流,每个进程一个。三个逻辑流的执行是交错的。进程A运行了一会儿,然后是进程B开始运行到完成。然后进程C运行了一回儿,进程A接着运行直到完成。最后,进程C可以运行到结束了。

进程是轮流使用处理器的。每个进程执行它的流的一部分,然后被抢占(暂时挂起),然后轮到其他进程。

2. 并发和并行的解释

一个逻辑流的执行在时间上与另一个流重叠,成为并发流,这两个流被称为并发地运行。更准确地说,流X和Y互相并发,当且仅当X在Y开始之后和Y结束之前开始,或者Y在X开始之后和X结束之前开始

如上图中,进程A和B并发地运行,A和C也一样。但是B和C没有并发地运行,因为B的最后一条指令在C的第一条指令之前执行。所以,多个流并发地执行的一般现象被称为并发(concurrency)

一个进程和其他进程轮流运行的概念称为多任务(multitasking)。一个进程执行它的控制流的一部分的每一时间段叫做时间片(time slice)。因此,多任务也叫做时间分片(time slicing)。

并发流的思想与流运行的处理器核数或者计算机数无关。如果两个流在时间上重叠,那么他们就是并发的,即使它们是运行在同一个处理器上。

另一方面,并行流是并发流的一个真子集。如果两个流并发地运行在不同的处理器核或者计算机上,那么我们称他们为并行流,他们并行地运行(running in parallel),且并行地执行(parallel execution)。所以,多个流并发地在多个处理器核上执行的现象称为并行(parallel)

posted @   GreeneGe  阅读(325)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?

https://github.com/Glf9832

点击右上角即可分享
微信分享提示