知识卡片
select语句的先到先服务语义
内容
select是专为通道设计的switch:它同时监听多个通道的收发操作,哪个通道先就绪就执行哪个分支,多个同时就绪则随机选一个。发散:select+default的组合是实现”非阻塞尝试”的标准写法——想读一个通道但不愿意为它阻塞整个流程时,用这个组合可以做到”有则处理、没有就跳过”,这也是很多轮询式并发逻辑的基础构件。
参考来源
- 位置:《Go Web编程》第9章《发挥Go的并发优势》(源文件:_epub-src/OEBPS/text00023.html)
- 结论依据:原文围绕“`select`是专为通道设计的`switch`:它同时监听多个通道的收发操作,哪个通道先就绪就执行哪个分支,多个同时就…”展开机制、顺序或组件关系说明;摘录中的关键步骤和术语支撑本卡片正文及结构图。
- 原始内容:果你在解决某个问题的时候,只有有限数量的工作进程可用,并且你打算限制传入请求的数量,那么有缓冲通道将是一种非常合适的工具。 9.3.4 从多个通道中选择 Go拥有一个特殊的关键字 select ,它允许用户从多个通道中选择一个通道来执行接收或者发送操作。 select 关键字就像是专门为通道而设的 switch 语句,代码清单9-9展示了一个使用 selec…