发布于 2026-01-06 0 阅读
0

并发不是并行 DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

并发性并非并行性

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

这篇文章的灵感来源于两件事:

  1. 最近完成的操作系统课程

虽然网上有很多关于这个主题的完整书籍章节,但我会尽量简明扼要地进行解释。

情况 1

这大概是上世纪八九十年代的情况,那时个人电脑还是个新鲜事物。那时候的电脑非常简单。那么它们里面有什么呢?通常只有一个处理器。这意味着什么呢?这意味着你的电脑一次只能运行一个进程。好极了!这意味着如果电脑正在运行一个进程,现在想运行另一个进程,它必须先关闭当前进程才能启动新进程。真是奇怪……🤨

情况二

那么,第一种情况该如何解决呢?电脑只有一个处理器,所以它不可能同时运行多个进程。好吧,电脑决定欺骗用户!怎么做呢?😋

这就引出了并发的概念……后台会有多个进程运行。处理器会交替地给每个进程分配时间,这样你(和我)就会觉得每个进程都在运行。是不是有点困惑?假设有两个进程 P1 和 P2。这两个进程都想同时启动。CPU 会先给 P1 分配 T 时间,然后再给 P2 分配 T 时间,之后再给 P1 分配 T 时间,如此循环往复……

现在你可能在思考,但却看不到一个进程停止而另一个进程运行。这是因为时间 T 非常非常小(大约在 10^-9 秒的量级),所以我们认为每个进程都在运行。
这个概念仍然有效,并且有多种算法可以让处理器选择要分配给哪个进程。其中最著名也最简单的算法之一是轮询算法,处理器会按顺序给每个进程分配时间,直到最后一个进程,然后再回到第一个进程。

情况 3

现在你知道了吧,那颗处理器骗了你,它实际上一次只能运行一个进程。是时候升级了。你去市场买新电脑,问了问CPU的规格。你肯定听说过核心这个概念,核心数从2个到4个,再到8个,甚至16个。你钱多得没处花🤑,觉得越大越好(这话没错),所以你买了颗8核CPU。

现在,你的CPU实际上拥有8个核心,而不是之前的1个。这意味着每个处理器都是独立的,可以各自执行不同的任务。因此,每个CPU一次只能运行一个进程。所以,实际上同时运行着8个进程,每个处理器运行一个。事实上,同时运行的进程不止一个,这就是所谓的并行处理。此外,每个处理器还会利用并发性来进一步优化进程的运行时间,因此你会感觉同时运行的进程远不止8个,尽管实际上一次只运行8个进程。

值得注意的是,用于渲染高质量游戏或训练深度学习模型的 GPU(图形处理单元)也使用并行处理,使其能够同时执行多个计算或渲染任务。

结论

并发:欺骗用户,进程交替运行
;并行:真正利用多个核心同时运行进程。

欢迎在评论区讨论疑问和其他想法。
感谢阅读!♥
我的博客里还有一些其他有趣的文章……

文章来源:https://dev.to/blackbird/concurrency-is-not-the-parallelism-2efb