package main | |
import ( | |
"fmt" | |
"sync" | |
"time" | |
) | |
//模拟一个耗时的任务 | |
func job(worker int)int{ | |
time.Sleep(time.Millisecond*500) | |
return worker | |
} | |
func main(){ | |
//记录开始时间 | |
start:=time.Now() | |
wg:=sync.WaitGroup{} | |
//初始化channel用于记录每次任务的工作结果 | |
reciveChan :=make(chan int) | |
//循环执行5次任务 | |
for i:=0;i<5;i++{ | |
wg.Add(1) | |
go func(par int) { | |
//将任务结果存在channel中 | |
reciveChan <- job(par) | |
wg.Done() | |
}(i) | |
} | |
go func() { | |
//等待所有任务执行结束后关闭channel,可以使后续遍历channel的循环退出 | |
defer close(reciveChan) | |
wg.Wait() | |
}() | |
//遍历输出channel中的内容 | |
for worker :=range(reciveChan){ | |
fmt.Println(worker) | |
} | |
//计算从开始时间到现在消耗的时间 | |
end:=time.Since(start) | |
fmt.Println("这批任务总共耗时为:",end.String()) | |
} |
Go 多协程记录执行结果
Golang
409
0
0
2022-06-14
登录后可点赞和收藏
标签
Golang进阶
登录后可点赞和收藏