go 等待所有 goroutine 结束示例 sync waitgroup

package main

import (
	"sync"
	"time"
	"log"// "github.com/sirupsen/logrus"
)

func job(wg *sync.WaitGroup, name string, sleepSecond time.Duration) {
	defer wg.Done()
	
	time.Sleep(time.Second*sleepSecond)
	log.Print(name + " done")
}

func main() {
	log.Print("hello world")

	var wg sync.WaitGroup
	wg.Add(3)
	go job(&wg, "job1", 1)
	go job(&wg, "job2", 2)
	go job(&wg, "job3", 1)

	wg.Wait()
	log.Print("all job done")
}

猜你喜欢

转载自blog.csdn.net/wangjunsheng/article/details/80886318