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
375
0
0
2022-06-14
登录后可点赞和收藏
标签
Golang进阶
登录后可点赞和收藏