Comment utiliser WaitGroup pour synchroniser Goroutine dans Go ?
Qu'est-ce que WaitGroup
? WaitGroup
?
WaitGroup
是 Go 中的一个内置类型,用于协调并发操作,它可以用来确保一组 goroutine 在执行完毕之前不会继续执行。
如何使用 WaitGroup
使用 WaitGroup
的步骤如下:
WaitGroup
var wg sync.WaitGroup
Add()
当一个新的 goroutine 开始执行时,使用 WaitGroup.Add(1)
来增加计数器。
wg.Add(1) go func() { // goroutine 代码 wg.Done() }()
Done()
当 goroutine 执行完毕时,使用 WaitGroup.Done()
来减少计数器。
func() { // goroutine 代码 wg.Done() }
使用 WaitGroup.Wait()
来阻塞当前 goroutine,直到所有关联的 goroutine 完成执行。
wg.Wait()
实战案例
以下是一个示例,演示了如何使用 WaitGroup
WaitGroup
est un type intégré dans Go qui est utilisé pour coordonner les opérations simultanées. Il peut être utilisé pour garantir qu'un groupe de goroutines ne continue pas son exécution tant qu'il n'a pas terminé son exécution. 🎜🎜🎜Comment utiliser WaitGroup
🎜🎜🎜Les étapes pour utiliser WaitGroup
sont les suivantes : 🎜WaitGroup
🎜package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup // 创建三个并发 goroutine for i := 0; i < 3; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Printf("Goroutine %d complete\n", i) }(i) } // 等待所有 goroutine 完成执行 wg.Wait() // 输出:Goroutine 0 complete // 输出:Goroutine 1 complete // 输出:Goroutine 2 complete fmt.Println("All goroutines completed") }
Add()
dans goroutine🎜WaitGroup.Add(1)
pour incrémenter le compteur. 🎜rrreeeDone()
dans goroutine🎜WaitGroup Done. ()
pour décrémenter le compteur. 🎜rrreeeWaitGroup.Wait()
pour bloquer la goroutine actuelle jusqu'à ce que tous les éléments associés goroutines Exécution complète. 🎜rrreee🎜🎜Cas pratique🎜🎜🎜Ce qui suit est un exemple qui montre comment utiliser WaitGroup
pour synchroniser trois goroutines simultanées : 🎜rrreeeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!