github.com/DARA-Project/GoDist-Scheduler@v0.0.0-20201030134746-668de4acea0d/examples/SimpleWaitGroup/waitgroup.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "sync" 6 "time" 7 ) 8 9 func main() { 10 var myWaitGroup sync.WaitGroup 11 12 myWaitGroup.Add(2) // Must wait for 2 calls to 'done' before moving on 13 14 go func(w *sync.WaitGroup) { 15 fmt.Println("Start goroutine 1") 16 fmt.Println("End goroutine 1") 17 w.Done() 18 }(&myWaitGroup) 19 20 go func(w *sync.WaitGroup) { 21 fmt.Println("Start goroutine 2") 22 time.Sleep(time.Second * 3) 23 fmt.Println("End goroutine 2") 24 w.Done() 25 }(&myWaitGroup) 26 27 fmt.Println("Waiting for all goroutines to exit") 28 myWaitGroup.Wait() 29 fmt.Println("Waited for all goroutines to exit") 30 }