sync.WaitGroup和sync.Once的爱恨情仇
今天,我们将继续探讨Go语言中的两个重要的同步工具:sync.WaitGroup 和 sync.Once。
sync.WaitGroup
sync.WaitGroup 是Go语言中的一种计数信号量,用于等待一组 goroutine 完成。它常用于等待一组并发任务全部完成后再继续执行。
使用方法
示例代码
package main
import (
   "fmt"
   "sync"
   "time"
)
func worker(id int, wg *sync.WaitGroup) {
   defer wg.Done()
   fmt.Printf("Worker %d starting\n", id)
   time.Sleep(time.Second)
   fmt.Printf("Worker %d done\n", id)
}
func main() {
   var wg sync.WaitGroup
   for i := 1; i
                         
 
                     
                     
                     
                    