我有以下中间人代码:去等待够程,但做的东西在此期间
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)
}
}
对于线for result := range results {
我得到一个错误: fatal error: all goroutines are asleep - deadlock!
。在例程execTask
中,我实际上使用os/exec来执行一个进程,所以我不知道results
中有多少结果。所以我必须等待所有流程的完成,但同时要对结果进行一些处理。当所有进程终止时,我的程序也可能被终止。
我该怎么做?
感谢, 拉尔斯
结果:=令(CHAN INT) 为_,任务:=一系列任务{ 去execTask(任务,结果) } 任务还呼吁的结果,可能会导致僵局.. – MarmiK