3步掌握DistroAV:OBS Studio专业级NDI视频传输终极指南
2026/8/4 15:57:49
在 Go 语言中,通道(Channels)能够轻松处理多消费者从单生产者接收数据,或单消费者从多生产者接收数据的场景。
这种情况较为简单,示例代码如下:
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
多个生产者可以使用sync.WaitGroup来处理,所有的 goroutine 共享同一个通道。示例代码如下: