是否有一个简单的程序演示了Go中队列的工作方式。
我只需要在队列中添加数字1到10并使用另一个线程从队列中并行提取那些对象即可。

最佳答案

您可以使用 channel (可安全地并发使用)和 WaitGroup 同时从队列中读取

package main

import (
    "fmt"
    "sync"
)

func main() {
    queue := make(chan int)

    wg := new(sync.WaitGroup)
    wg.Add(1)
    defer wg.Wait()

    go func(wg *sync.WaitGroup) {
        for {

            r, ok := <-queue
            if !ok {
                wg.Done()
                return
            }

            fmt.Println(r)
        }
    }(wg)

    for i := 1; i <= 10; i++ {
        queue <- i
    }

    close(queue)
}

游乐场链接:https://play.golang.org/p/A_Amqcf2gwU

关于multithreading - 简单队列模型示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49296218/

10-12 13:55