Go语言并发模式与反射机制深度解析
1. 生产者与消费者模式
在Go语言中,通道(Channels)为处理多生产者和多消费者场景提供了便利。以下是几种常见的生产者 - 消费者场景及示例代码:
1.1 单生产者单消费者
这种情况比较简单,生产者向通道发送数据,消费者从通道接收数据。示例代码如下:
func main() {
// one producer
var ch = make(chan int)
go func() {
for i := 0; i < 100; i++ {
ch <- i
}
close(ch)
}()
// one consumer
var done = make(chan struct{})
go func() {
for i := range ch {
fmt.Println(i)
}
close(done)
}()
<-done
}
完整示例可参考: https://play.golang.org/p/hNgehu62kjv
1.2 多生产者单消费者
多个生产者共享同一个通道,使用 sync.WaitGroup </
超级会员免费看
订阅专栏 解锁全文
1042

被折叠的 条评论
为什么被折叠?



