小编Lar*_*ker的帖子

去等goroutines,但同时做的东西

我有以下go-Code:

func execTask(input int, results chan<- int) {
    //do stuff (in my case, start process and return something)
    results <- someResult
}

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

    for _, task := range tasks {
        go execTask(task, results)
    }

    for result := range results {
        fmt.Println(result)
    }
}
Run Code Online (Sandbox Code Playgroud)

对于这行,for result := range results {我得到一个错误: fatal error: all goroutines are asleep - deadlock!.在例程中execTask我实际上用os/exec执行一个进程,所以我不知道有多少结果results.所以我必须等待所有进程的完成,但同时对结果做一些事情.当所有进程终止时,我的go-Programm也可能被终止.

我该怎么做呢?

谢谢,拉尔斯

concurrency go goroutine

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

标签 统计

concurrency ×1

go ×1

goroutine ×1