Maison  >  Article  >  développement back-end  >  Utilisez Go WaitGroup pour mettre en œuvre des tâches de traitement simultanées efficaces

Utilisez Go WaitGroup pour mettre en œuvre des tâches de traitement simultanées efficaces

王林
王林original
2023-09-27 15:01:131004parcourir

使用Go WaitGroup实现高效并发处理任务

Utilisez Go WaitGroup pour réaliser des tâches de traitement simultanées efficaces

En langage Go, utilisez WaitGroup pour réaliser des tâches de traitement simultanées efficaces. WaitGroup est un sémaphore de comptage utilisé pour attendre qu'un groupe de goroutines termine son travail avant de passer à l'étape suivante.

WaitGroup a trois méthodes principales : Add(), Done() et Wait(). La méthode Add() est utilisée pour augmenter le nombre de goroutines en attente, la méthode Done() indique qu'une goroutine est terminée et la méthode Wait() est utilisée pour bloquer la goroutine principale jusqu'à ce que toutes les goroutines soient terminées.

Ce qui suit utilisera un exemple simple pour illustrer comment utiliser WaitGroup pour traiter des tâches simultanément.

Tout d'abord, nous devons créer une instance WaitGroup :

var wg sync.WaitGroup

Ensuite, nous pouvons utiliser la méthode Add() pour augmenter le nombre de goroutines en attente et appeler la méthode Done() à la fin de chaque goroutine :

func main() {
    // 设置等待的goroutine数量
    wg.Add(2)

    // 启动第一个goroutine
    go doTask1()

    // 启动第二个goroutine
    go doTask2()

    // 等待所有goroutine完成
    wg.Wait()
}

func doTask1() {
    // 模拟任务1
    time.Sleep(time.Second * 1)
    fmt.Println("Task 1 is done!")

    // 调用Done()方法表示任务完成
    wg.Done()
}

func doTask2() {
    // 模拟任务2
    time.Sleep(time.Second * 2)
    fmt.Println("Task 2 is done!")

    // 调用Done()方法表示任务完成
    wg.Done()
}

In Dans l'exemple ci-dessus, nous avons créé deux goroutines pour exécuter les fonctions doTask1() et doTask2(), chaque fonction simule une tâche chronophage. Après avoir démarré toutes les goroutines, la goroutine principale appelle la méthode Wait() pour se bloquer jusqu'à ce que toutes les tâches soient terminées.

Exécutez le code ci-dessus, vous pouvez obtenir un résultat similaire à celui-ci :

Task 1 is done!
Task 2 is done!

Vous pouvez voir que les deux tâches sont exécutées en parallèle et que les informations correspondantes sont imprimées une fois terminées. Utilisez WaitGroup pour faciliter le traitement simultané et reprendre l'exécution de la goroutine principale une fois toutes les tâches terminées.

Il convient de noter que lors de l'utilisation de WaitGroup, vous devez vous assurer que chaque tâche appelle la méthode Done(), sinon la goroutine principale sera toujours bloquée au niveau de la méthode Wait(), empêchant le programme de poursuivre son exécution.

Pour résumer, Go WaitGroup est un outil de contrôle de concurrence simple et efficace qui peut nous aider à réaliser des tâches de traitement simultanées efficaces. En appelant les méthodes Add(), Done() et Wait(), nous pouvons contrôler l'ordre d'exécution des goroutines et continuer à effectuer les opérations suivantes une fois toutes les tâches terminées.

J'espère que cet article vous aidera à comprendre les tâches de traitement simultanées et à utiliser Go WaitGroup !

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!

Déclaration:
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