小编Jit*_*rew的帖子

Go Routines有时可以工作,有时会产生密切的通道错误

我是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)

concurrency go goroutine

1
推荐指数
1
解决办法
93
查看次数

标签 统计

concurrency ×1

go ×1

goroutine ×1