Go语言channel实现等待所有任务完成
package main
//通过channel实现等待所有任务完成
import (
"fmt"
"runtime"
"strconv"
"time"
)
func runTask2(i int) string {
time.Sleep(time.Second*1)
return strconv.Itoa(i)+"返回的结果"
}
func allResponse() string{
num:=10
ch:=make(chan string,num)
for i:=0;i<num;i++{
go func(i int) {
ret:=runTask2(i)
ch<-ret
}(i)
}
finalString:=""
for i:=0;i<num;i++{
res:=<-ch
finalString+=res+"n"
}
return finalString
}
func main() {
fmt.Println("开始的时候协程数:",runtime.NumGoroutine())
ss:=allResponse()
fmt.Println(ss)
fmt.Println("结束的时候协程数:",runtime.NumGoroutine())
}
同步发布于小猿取经博客
小猿取经 - 博客园www.cnblogs.com