5. 统计协程耗时
此开源图书由ithaiq原创,创作不易转载请注明出处
type MyWaitGroup struct {
sync.WaitGroup
cost int64
}
func test1() {
time.Sleep(time.Second * 3)
}
func test2() {
time.Sleep(time.Second * 1)
}
func test3() {
time.Sleep(time.Second * 2)
}
func doWork(wg *MyWaitGroup, fns ...func()) {
for _, fn := range fns {
wg.Add(1)
go func(fn func()) {
defer wg.Done()
defer func(t time.Time) {
wg.cost += time.Since(t).Milliseconds() / 1000
}(time.Now())
fn()
}(fn)
}
}
func main() {
now := time.Now()
var wg MyWaitGroup
doWork(&wg, test1, test2, test3)
wg.Wait()
fmt.Println(time.Since(now).Milliseconds() / 1000)
fmt.Println(wg.cost)
}
由上可以看出扩展了WaitGroup方法实现
最后更新于
这有帮助吗?