我是Go的新手,我正在尝试了解并发模式.当我运行以下代码时,我有时会得到预期的结果(从0到9999的完整数组).其他时候,我只是在显示时间时收到"那是它"的消息.有时我只是收到"发送封闭频道"错误.这可能会出错?
package main
import (
"fmt"
"time"
"sync"
)
func JobsDispatcher(in chan int, data []int){
for _, value := range data{
in<-value
}
close(in)
}
func Worker(in chan int, out chan int, wg *sync.WaitGroup){
wg.Add(1)
for{
inMsg, ok := <-in
if !ok{
wg.Done()
return
}
out <- inMsg
}
}
func PrintInt(out chan int){
for {
outMsg, ok := <-out
if !ok{
fmt.Println("")
fmt.Println("That's it")
return
}
fmt.Println(outMsg)
}
}
func ParallelPrint(data []int){
var wg sync.WaitGroup
in := make(chan int) …Run Code Online (Sandbox Code Playgroud)