在下面的例子中,我们在一个循环中用一个缓冲通道运行有限的goroutines,以完成许多工作。每个例子都有自己的要求,并使用不同的软件包,如图所示。
-
**errgroup -**每次最多运行10个goroutine,完成100个作业,一旦goroutine失败,就强制终止程序,或者在完成后正常存在。然而,如果程序运行时间超过1秒,则优雅地终止它,不需要等待goroutine完成。
-
**waitgroup -**每次最多运行10个goroutine,一直到100个作业结束。然而,如果程序运行时间超过1秒,则优雅地终止它,而不等待goroutines完成。
package main
waitgroup
package main