Maison >développement back-end >Golang >Comment utiliser le contrôle de concurrence de la fonction Golang pour le calcul parallèle

Comment utiliser le contrôle de concurrence de la fonction Golang pour le calcul parallèle

王林
王林original
2024-04-24 14:03:011199parcourir

Dans Go, vous pouvez utiliser la goroutine et le contrôle de concurrence des fonctions pour implémenter le calcul parallèle. Les étapes spécifiques sont les suivantes : Créez une goroutine et utilisez le mot-clé go pour créer une unité d'exécution simultanée légère. Utilisez le type sync.WaitGroup pour gérer les goroutines et coordonner l'exécution parallèle. Divisez la tâche en parties et utilisez des goroutines pour exécuter les parties en parallèle.

Comment utiliser le contrôle de concurrence de la fonction Golang pour le calcul parallèle

Comment utiliser le contrôle de concurrence fonctionnel de Go pour l'informatique parallèle

L'informatique parallèle est une technologie qui permet à un programme d'exécuter du code sur plusieurs processeurs ou cœurs simultanément, améliorant ainsi les performances et l'efficacité. Dans le langage Go, le calcul parallèle peut être implémenté via le contrôle de simultanéité des goroutines et des fonctions.

Goroutine

Goroutine est une unité d'exécution simultanée légère dans Go. Ils sont très similaires aux threads, mais plus légers et efficaces. Vous pouvez créer une goroutine en utilisant le mot-clé go : go 关键字创建一个 goroutine:

go func() {
    // 并发执行的代码
}

函数并发控制

函数并发控制是一种使用 goroutine 并行执行多个函数的技术。这可以通过使用 sync.WaitGroup 类型来实现:

import (
    "sync"
)

var wg sync.WaitGroup

实战案例

考虑一个计算 100 个数字斐波那契数列的程序。我们可以使用函数并发控制来将此任务分成多个部分,并并行执行它们:

func fib(n int) int {
    if n < 2 {
        return n
    }
    return fib(n-1) + fib(n-2)
}

func main() {
    var results []int
    n := 100

    wg.Add(n)
    for i := 0; i < n; i++ {
        go func(i int) {
            results[i] = fib(i)
            wg.Done()
        }(i)
    }

    wg.Wait()

    fmt.Println(results)
}

在这个示例中,fib 函数计算斐波那契数列,main 函数创建 100 个 goroutine 来并行计算斐波那契数,并使用 WaitGrouprrreee

🎜Contrôle de concurrence des fonctions🎜🎜🎜Le contrôle de concurrence des fonctions est une technologie qui utilise goroutine pour exécuter plusieurs fonctions en parallèle. Ceci peut être réalisé en utilisant le type sync.WaitGroup : 🎜rrreee🎜🎜Exemple pratique🎜🎜🎜Considérons un programme qui calcule la séquence de Fibonacci de 100 nombres. Nous pouvons utiliser le contrôle de concurrence des fonctions pour diviser cette tâche en plusieurs parties et les exécuter en parallèle : 🎜rrreee🎜Dans cet exemple, la fonction fib calcule la séquence de Fibonacci, main Le code> La fonction crée 100 goroutines pour calculer les nombres de Fibonacci en parallèle et utilise <code>WaitGroup pour attendre que toutes les goroutines soient terminées avant d'imprimer les résultats. 🎜

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