package main
import "fmt"
// 生产者
func producer(data chan<- int) {
for i := 0; i < 4; i++{
data <- i // 向通道发送消息
}
}
// 消费者
func consumer(data <-chan int, done chan<- bool) {
for v := range data {
fmt.Printf("recv:%d", v) // 接受数据,直到通道为空
}
done <- true
}
func main() {
data := make(chan int) // 数据管道
done := make(chan bool) // 用于接收消费结束信号
go consumer(data, done)
go producer(data)
<-done // 阻塞,直到消费者发回结束信号
}