1. 通道概念
chan
是 Go
语言里面的一个关键宇,是 channel
的简写,翻译为中文就是通道。
goroutine
是 Go
语言里面的并发执行体,通道是 goroutine
之间通信和同步的重要组件。 Go
的哲学是
Don’t communicate by sharing memory; share memory by communicating. (不要通过共享内存来通信,而应该通过通信来共享内存。)这是作为 Go 语言的主要创造者之一的 Rob Pike 的至理名言。
Go
语言通过通道可以实现多个 goroutine
之间内存共享。
在 Go
语言里,你不仅可以使用原子函数和互斥锁来保证对共享资源的安全访问以及消除竞争状态,还可以使用通道,通过发送和接收需要共享的资源,在 goroutine
之间做同步。
当一个资源需要在 goroutine
之间共享时,通道在 goroutine
之间架起了一个管道,并提供了确保同步交换数据的机制。
多个 <