我有以下中間人代碼:去等待夠程,但做的東西在此期間
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