通道与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 //阻塞,知道消费者发回结束信号
}
//消费者
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
阅读全文
0 0
- 通道与gorouine搭配,实现通信代替内存共享的GSP模型
- Go 语言的并发模型--通过通信来共享内存
- 利用mmap实现用户空间与内核空间的共享内存通信
- 利用mmap实现用户空间与内核空间的共享内存通信
- 通过共享内存和信号量实现进程间的通信
- 进程间通信之“内存共享”的简单实现
- 如何利用内存池和共享内存构建高速的进程间通信模型
- nginx - 共享内存与锁的实现
- 非亲缘进程间的共享内存与信号通信
- 非亲缘进程间的共享内存与信号通信
- 进程间通信 "共享内存" 与 “信号量”的使用
- 共享内存的进程通信
- 服务器内存与CPU的搭配
- 共享内存的编程模型
- 共享内存的编程模型
- 进程通信----共享内存以及mmap函数实现共享内存
- 2.1 通信通道模型定义
- CPU与内存搭配
- 红米Note增强版出现”无法安装xxx ,请释放一些存储空间并重试“解决
- redis详解——redis集群搭建和使用(二)
- 工具栏编程
- JPEG图片存储格式及原理
- javaScript系列之使用构造方法创建js对象(八)
- 通道与gorouine搭配,实现通信代替内存共享的GSP模型
- 图标变换示例
- visual studio 小技巧
- Supervised Learning 003: k-Nearest Neighbor
- Android IPC 进程间通信机制之 Messenger
- 更改外观样式
- Python3爬虫笔记一
- java单链表反转
- SDUT 2017 个人排位赛---A