我有以下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也可能被终止.
我该怎么做呢?
谢谢,拉尔斯