美文网首页
生产者消费者模式在GoLang中的应用

生产者消费者模式在GoLang中的应用

作者: 高稚商de菌 | 来源:发表于2018-03-12 22:54 被阅读0次

    在并发编程中生产者消费者模式模式可以解决大多数并发问题。该模式通过一个阻塞队列来平衡生产者和消费者之间的工作能力,以提高整体的处理速度。Go语言作为一种原生支持高并发的语言,经常使用生产者和消费者模式。

    需要说明的是: 生产者和消费者模式并没有被列入GoF的23种OOP(面向对象编程)的设计模式, 是因为该模式并不是一种OOP的设计模式,而是一种面向过程的设计模式。

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        ch := make(chan int)
        defer close(ch)
        // consumer
        for i := 0; i < 10; i++ {
            go func() {
                num := <- ch
                fmt.Println(num)
            }()
        }
    
        // product
        for i := 0; i < 10; i++ {
            go func(num int) {
                ch <- num
                fmt.Println(num)
            }(i)
        }
        time.Sleep(1 * time.Second)
    }
    
    5
    0
    6
    7
    8
    9
    2
    1
    3
    4
    

    如果生产者这样写:

    for i := 0; i < 10; i++ {
        go func() {
            ch <- i
        }
    }
    

    就会形成闭包,结果为:

    10
    10
    10
    10
    10
    10
    10
    10
    10
    10
    

    相关文章

      网友评论

          本文标题:生产者消费者模式在GoLang中的应用

          本文链接:https://www.haomeiwen.com/subject/mgzofftx.html