Go 的 channel 如何实现生产者-消费者模式?

提问者:帅平 问题分类:面试刷题
Go 的 channel 如何实现生产者-消费者模式?
1 个回答
吹南风
吹南风
channel 是 Go 的goroutine间通信和同步的核心机制,实现生产者-消费者模式的关键步骤:
声明通道:ch := make(chan Type)(可选缓冲区 make(chan Type, bufferSize))。
生产者:向通道发送数据(ch <- value),若通道已满会阻塞。
消费者:从通道接收数据(value := <-ch),若通道为空会阻塞。
关闭通道:生产者完成后关闭通道(close(ch)),消费者通过 for range ch 或 value, ok := <-ch 检测结束。
示例代码如下:
func main() {  
    ch := make(chan int)  
    go func() { // 生产者  
        for i := 0; i < 5; i++ {  
            ch <- i  
        }  
        close(ch)  
    }()  
    for num := range ch { // 消费者  
        fmt.Println(num)  
    }  
}
发布于:1周前 (04-22) IP属地:
我来回答