知识卡片
无缓冲通道与有缓冲通道
内容
无缓冲通道是同步的,容量恰好为一件物品:一个goroutine往里放东西后,除非另一个goroutine取走,否则无法再放第二次,放和取必须一一配对完成,这天然就是一种同步机制——想让两个goroutine在某个时间点”会合”,用无缓冲通道最直接。发散:选无缓冲还是有缓冲,本质是在问”我是要用通道强制两端同步会合,还是只是要一个有容量上限的缓冲队列”——前者是同步原语,后者是限流/削峰工具,。
参考来源
- 位置:《Go Web编程》第9章《发挥Go的并发优势》(源文件:_epub-src/OEBPS/text00023.html)
- 结论依据:原文在该章节围绕“无缓冲通道是同步的,容量恰好为一件物品:一个goroutine往里放东西后,除非另一个goroutine取走,…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:第9章 发挥Go的并发优势 本章主要内容 从原理上理解并发和并行 学习如何使用goroutine以及通道 在Web应用中使用并发特性 Go语言一个广为人知的特点就是,可以更容易地写出错误更少的并发程序。本章将介绍并发这一技术,并讨论Go语言的并发模型以及设计。除此之外,我们还会深入地了解Go语言为实现并发而提供的两个特性,它们分别是gor…