MST

星途 面试题库

面试题:Go 并发设计模式之生产者消费者模式实现

请用 Go 语言实现一个简单的生产者消费者模式,生产者生成整数,消费者消费这些整数并打印出来,使用通道(channel)和 goroutine 实现,同时要处理好缓冲区和资源同步问题。
44.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func producer(ch chan int, bufferSize int) {
    for i := 0; ; i++ {
        if len(ch) >= bufferSize {
            // 缓冲区满,等待
            continue
        }
        ch <- i
    }
}

func consumer(ch chan int) {
    for num := range ch {
        fmt.Println("Consumed:", num)
    }
}

func main() {
    bufferSize := 5
    ch := make(chan int, bufferSize)

    go producer(ch, bufferSize)
    go consumer(ch)

    // 防止主线程退出
    select {}
}