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  }