知识卡片
用通道串联goroutine形成管道
内容
Unix管道把多个命令串起来,前一个的标准输出接后一个的标准输入(find | grep | sort),Go的通道可以在程序内部实现同样的组合方式:每个阶段是一个函数,接收一个输入通道、内部起一个goroutine持续处理、返回一个输出通道,下一阶段直接拿这个输出通道当自己的输入通道用。发散:这种把处理逻辑拆成”接收通道→处理→返回新通道”的独立单元、再靠调用时的组合方式拼接起来的写法,是函数。
参考来源
- 位置:《Go语言程序设计》第7章《并发编程》(源文件:_epub-src/OEBPS/text00041.html)
- 结论依据:原文围绕“Unix管道把多个命令串起来,前一个的标准输出接后一个的标准输入(`find|grep|sort`),Go的通道可以在程…”展开机制、顺序或组件关系说明;摘录中的关键步骤和术语支撑本卡片正文及结构图。
- 原始内容:所有进程间通信,通常这比共享内存的并发模型有更多的开销。 Go语言的解决方案有3个优点。首先,Go语言对并发编程提供了上层支持,因此正确处理并发是很容易做到的。其次,用来处理并发的goroutine比线程更加轻量。第三,并发程序的内存管理有时候是非常复杂的,而Go语言提供了自动垃圾回收机制,让程序员的工作轻松很多。 Go语言为并发编程而内置的上层API基于C…