是否有一个简单的程序演示了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/