func worker(t *testing.T, client *ChainClient, count int, wg *sync.WaitGroup) { for i := 0; i < count; i++ { _, err := testUserContractClaimInvoke(client, "save", false) require.Nil(t, err) } wg.Done() }
开发过程中,经常遇到task之间的同步问题。例如,多个子task并发完成一部分任务,主task等待他们最后结束。
在Go语言,实现同步的一种方式就是WaitGroup。
t1 := time.Now() var wg sync.WaitGroup for i := 0; i <= 10; i++ { wg.Add(1) go worker(t, client,1, &wg) } wg.Wait() t2 := time.Now() fmt.Println("total time:") fmt.Println(t2.Sub(t1))
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站