Maison > développement back-end > Golang > le corps du texte

Comment synchroniser Goroutine en utilisant WaitGroup dans Go ?

WBOY
Libérer: 2024-06-01 21:18:00
original
469 Les gens l'ont consulté

如何在 Go 中使用WaitGroup同步 Goroutine?

Comment utiliser WaitGroup pour synchroniser Goroutine dans Go ?

Qu'est-ce que WaitGroup ? WaitGroup

WaitGroup 是 Go 中的一个内置类型,用于协调并发操作,它可以用来确保一组 goroutine 在执行完毕之前不会继续执行。

如何使用 WaitGroup

使用 WaitGroup 的步骤如下:

  1. 创建 WaitGroup
var wg sync.WaitGroup
Copier après la connexion
  1. 在 goroutine 中使用 Add()

当一个新的 goroutine 开始执行时,使用 WaitGroup.Add(1) 来增加计数器。

wg.Add(1)
go func() {
  // goroutine 代码
  wg.Done()
}()
Copier après la connexion
  1. 在 goroutine 中使用 Done()

当 goroutine 执行完毕时,使用 WaitGroup.Done() 来减少计数器。

func() {
  // goroutine 代码
  wg.Done()
}
Copier après la connexion
  1. 等待 Goroutine 完成

使用 WaitGroup.Wait() 来阻塞当前 goroutine,直到所有关联的 goroutine 完成执行。

wg.Wait()
Copier après la connexion

实战案例

以下是一个示例,演示了如何使用 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 : 🎜
  1. 🎜Créer 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")
}
Copier après la connexion
  1. 🎜Utilisez Add() dans goroutine🎜
🎜Quand une nouvelle goroutine démarre en cours d'exécution, utilisez WaitGroup.Add(1) pour incrémenter le compteur. 🎜rrreee
  1. 🎜Utilisez Done() dans goroutine🎜
🎜Lorsque la goroutine termine son exécution, utilisez WaitGroup Done. () pour décrémenter le compteur. 🎜rrreee
  1. 🎜Attendez que Goroutine soit terminé🎜
🎜Utilisez WaitGroup.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 : 🎜rrreee

Ce 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!

Étiquettes associées:
go
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!