知识卡片

通道同步交换

专业/工作 · 489.b.1.d

内容

channel 让 goroutine 通过通信交换数据,把共享资源的访问序列化。它不是万能队列:当多个协程争抢同一通道时,仍要设计容量、关闭时机和消费关系。这套通信优先于共享内存的思路,后来被 [[CSP用通道通信]] 正式化为并发模型。

参考来源

- 位置:《Go语言高级开发与实战》第1章《Go语言基础实战》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_012.html) - 结论依据:原文定义通道用于传递数据,并说明 Go 提倡用通信代替共享内存、通道提供同步交换机制,因此可推出 channel 的并发协调含义。 - 原始内容:9 通道实战技巧 1.9.1 通道基础 通道(channel)是用来传递数据的一个数据结构。Go语言提倡使用通信的方法代替共享内存。当一个资源需要在协程(goroutine)之间共享时,通道在goroutine之间架起了一个管道,并提供了确保同步交换数据的机制。 在声明通道时,需要指定将要被共享的数据的类型。可以通过通道共享内置类型、命名类型、结构类型和引用类型的值或者指针。 Go语言中的通道是一种特殊的类型。在任何时候