GO 计算所有并发任务的总时间 WaitGroup

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO 计算所有并发任务的总时间 WaitGroup相关的知识,希望对你有一定的参考价值。

开发过程中,经常遇到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))


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()
}

以上是关于GO 计算所有并发任务的总时间 WaitGroup的主要内容,如果未能解决你的问题,请参考以下文章

7.3 Go语言中通过WaitGroup控制并发

7.3 Go语言中通过WaitGroup控制并发

Go sync.WaitGroup的学习

Go 并发

Go并发控制之sync.WaitGroup

Go WaitGroup的使用