Go 多线程 (1) waitgroup

下面的代码创建了两个匿名的异步函数, 然后通过waitgroup来等待这两个异步方法

package main

 

import (

    "fmt"

    "sync"

)

 

func main() {

    var wg sync.WaitGroup

    wg.Add(2)

    fmt.Println("Started...")

 

    go func() {

        defer wg.Done()

        fmt.Println("first thread finished")

    }()

 

    go func() {

        defer wg.Done()

        fmt.Println("second thread finished")

    }()

 

    fmt.Println("waiting...")

    wg.Wait()

    fmt.Println("done")

}