文章目录
Go语言实现生产者/消费者模型
采用channel
与goroutine
搭配,实现用通讯代替内存共享的CSP模型,实现生产者与消费者模型
package main
//消费者
func consumer(data chan int,done chan bool) {
for x :=range data{ //接受数据,直到通道被关闭
println("recv:",x)
}
done <-true //通知main(),消费结束
}
// 生产者
func producer( data chan int) {
for i :=0; i<4;i++ {
data <-i // 发送数据
}
close(data) //生成结束,关闭通道
}
func main() {
done :=make(chan bool) //用于接受消费结束信号
data :=make(chan int) //数据管道
go consumer(data,done) //启动消费者
go producer(data) //启动生产者
<-done //阻塞,直到消费值发回结束信号。
}