知识卡片

并发与并行的本质区别

专业/工作 · 479

内容

并发指多个任务在同一时间段内启动、运行、结束,彼此在时间上重叠,但不要求真的同时执行——就像两条结账队伍共用一个收银台,顾客们交替被服务;并行则要求多个任务真正同时执行,通常需要独立的资源(如多个CPU核心),就像两条队伍各自配一个收银台。发散:Go刻意在语言层面只提供并发原语(goroutine/channel),把是否并行交给运行时根据GOMAXPROCS自动决定——这是”先把问题分。

参考来源

- 位置:《Go Web编程》第9章《发挥Go的并发优势》(源文件:_epub-src/OEBPS/text00023.html) - 结论依据:原文在该章节围绕“并发指多个任务在同一时间段内启动、运行、结束,彼此在时间上重叠,但不要求真的同时执行——就像两条结账队伍共用一…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:念上并不相同,但它们并不相互排斥,比如Go语言就可以创建出同时具有并发和并行这两种特征的程序。为了让并行程序可以同时运行多个任务,Go语言的用户需要将环境变量 GOMAXPROCS 的值设置成大于 1 。在Go 1.5版本之前, GOMAXPROCS 默认会被设置为 1 ,但是从Go 1.5版本开始, GOMAXPROCS 默认将被设置为…