通道与gorouine搭配,实现通信代替内存共享的GSP模型

来源:互联网 发布:沥青抽提试验数据 编辑:程序博客网 时间:2024/06/15 05:08
//------------------------CSP模型:用通信代替内存共享
    //消费者
func guke(gu chan int ,ke chan bool) {
for x:= range gu {              //接收数据,直到通道被关闭
println("recv:",x)
}
ke <- true   //通知main,消费结束
}


//生产者
func boss(gu chan int) {
for i:=0;i<4;i++ {
gu <- i   //发送数据
}
close(gu)  //生产结束,通道关闭
}


func main() {
ke := make(chan bool)  //接收消费结束信号
gu := make(chan int)   //数据管道


go guke(gu,ke) //启动消费者
go boss(gu)    //启动生产者


<-ke  //阻塞,知道消费者发回结束信号


}

}

输出:recv : 0

           recv : 1

           recv : 2

           recv : 3