Golang:sync.WaitGroup同步

/ Golang / 没有评论 / 372浏览

//sync.WaitGroup的用途是它能够等待所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成

//缺点:执行结果并不保证是顺序的,且进程结束并不会保证等待goroutine执行结束,无法指定固定的goroutine数量。可能通过channel解决这个问题

// Add():添加或者减少等待goroutine的数量
// Done():相当于Add(-1)
// Wait():执行阻塞,直到所有的WaitGroup数量编程0


package main

import (
	"fmt"
	"sync"
)

var waitgroup sync.WaitGroup

func Afunction(shownum int){
	fmt.Println(shownum)
	waitgroup.Done()
}


func main() {
	for i:=0;i<10;i++{
		waitgroup.Add(1)
		go Afunction(i)
	}

	waitgroup.Wait()
}