知识卡片

扇形散开与扇形聚拢模式

专业/工作 · 479.d.2

内容

扇形散开(fan-out)指把一个大任务拆成多个独立的子任务,分别丢给不同的goroutine并发处理,每个子任务对应一个只能接收的通道;扇形聚拢(fan-in)指反过来用select在一个循环里同时监听这些通道,谁先出结果就先处理谁,直到所有通道都返回结果为止,再把它们合并成最终输出发散:fan-out/fan-in是几乎所有”批量任务并发处理再汇总结果”场景的通用骨架——拆分粒度决定。

参考来源

- 位置:《Go Web编程》第9章《发挥Go的并发优势》(源文件:_epub-src/OEBPS/text00023.html) - 结论依据:原文围绕“扇形散开(fan-out)指把一个大任务拆成多个独立的子任务,分别丢给不同的goroutine并发处理,每个子任务对应一…”展开机制、顺序或组件关系说明;摘录中的关键步骤和术语支撑本卡片正文及结构图。 - 原始内容:果你在解决某个问题的时候,只有有限数量的工作进程可用,并且你打算限制传入请求的数量,那么有缓冲通道将是一种非常合适的工具。 9.3.4 从多个通道中选择 Go拥有一个特殊的关键字 select ,它允许用户从多个通道中选择一个通道来执行接收或者发送操作。 select 关键字就像是专门为通道而设的 switch 语句,代码清单9-9展示了一个使用 selec…