package main
import (
"fmt"
"sync"
"time"
)
/*
WaitGroup用于等待一组线程的结束。父线程调用Add方法来设定应等待的线程的数量。每个被等待的线程在结束时应调用Done方法。
同时,主线程里可以调用Wait方法阻塞至所有线程结束。
*/
var wg sync.WaitGroup
func test(i int){
fmt.Println("test func...", i)
time.Sleep(time.Second)
// 表示goroutine已经执行完成
wg.Done()
}
func main() {
var count = 100
// 添加goroutine计数器
wg.Add(count)
for i:=0;i<count;i++{
go test(i)
}
fmt.Println("main func...")
// 等待goroutine执行完毕
wg.Wait()
}
package main
import (
"fmt"
"sync"
)
/*
WaitGroup用于等待一组线程的结束。父线程调用Add方法来设定应等待的线程的数量。每个被等待的线程在结束时应调用Done方法。
同时,主线程里可以调用Wait方法阻塞至所有线程结束。
*/
var wg sync.WaitGroup
func main() {
var count = 100
// 添加goroutine计数器
wg.Add(count)
for i:=0;i<count;i++{
// 使用匿名函数
go func(i int){
fmt.Println("goroutine", i)
// 表示goroutine已经执行完成
wg.Done()
}(i)
}
fmt.Println("main func...")
// 等待goroutine执行完毕
wg.Wait()
}
有疑问加站长微信联系(非本文作者)