WaitGroup


WaitGroup在go語言中,用於線程同步,單從字面意思理解,wait等待的意思,group組、團隊的意思,WaitGroup就是指等待一組,等待一個系列執行完成后才會繼續向下執行。
先說說WaitGroup的用途:它能夠一直等到所有的goroutine執行完成,並且阻塞主線程的執行,直到所有的goroutine執行完成。
WaitGroup總共有三個方法:Add(delta int),Done(),Wait()。簡單的說一下這三個方法的作用。
Add: 添加或者減少等待goroutine的數量
Done: 相當於Add(-1)
wait: 執行阻塞,直到所有的WaitGroup數量變成0

package main

import (
	"fmt"
	"sync"
)

func calc(w *sync.WaitGroup, i int) {

	fmt.Println("calc:", i)
	w.Done()
}

func main() {

	wg := sync.WaitGroup{}

	for i := 0; i < 10; i++ {
		wg.Add(1)

		go calc(&wg, i)
	}

	wg.Wait()

	fmt.Println("all goroutine finish")

}

運行結果:

calc: 6
calc: 9
calc: 0
calc: 8
calc: 3
calc: 5
calc: 2
calc: 4
calc: 7
calc: 1
all goroutine finish


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM