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

Comment implémenter la sommation simultanée à l'aide de Golang

PHPz
Libérer: 2023-04-25 16:30:05
original
801 Les gens l'ont consulté

En informatique, la mise en œuvre de la concurrence est un sujet important car elle rend les programmes plus efficaces, évolutifs et rapides. Parmi les langages de programmation, Golang est un langage qui prend en charge la programmation simultanée et fournit de nombreux outils et mécanismes pour réaliser la concurrence. Dans cet article, nous explorerons comment implémenter des sommes simultanées à l'aide de Golang.

Tout d’abord, nous devons savoir ce qu’est la simultanéité. En programmation, la concurrence fait référence à la capacité d’effectuer plusieurs opérations simultanément. Dans Golang, vous pouvez utiliser des mécanismes tels que goroutine et canal pour obtenir la concurrence. Goroutine est un thread extrêmement léger et peut créer des milliers de goroutines, et ces goroutines peuvent s'exécuter simultanément dans le même processus. Channel est un mécanisme de communication entre goroutines, qui nous permet d'envoyer et de recevoir des données en toute sécurité sur plusieurs goroutines.

Voyons maintenant comment implémenter des sommes simultanées à l'aide de Golang. Nous utiliserons des goroutines et des canaux pour réaliser cette tâche. Tout d’abord, nous devons définir une fonction qui calculera la somme des tableaux partiels. Nous lancerons ensuite plusieurs goroutines, chacune traitant un tableau partiel et envoyant les résultats à un canal. Enfin, nous lirons tous les résultats du canal et les ajouterons pour obtenir la somme du tableau. Voici l'exemple de code :

package main

import "fmt"

func sum(nums []int, channel chan int) {
    total := 0
    for _, num := range nums {
        total += num
    }
    channel <- total
}

func main() {
    nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    channel := make(chan int)

    // 启动多个goroutine
    go sum(nums[:5], channel)
    go sum(nums[5:], channel)

    // 从channel中读取结果并相加
    total := <-channel + <-channel

    fmt.Println("Total Sum:", total)
}
Copier après la connexion

Dans le code ci-dessus, nous avons défini une fonction somme qui accepte un tableau d'entiers et un canal comme paramètres. Dans la fonction, nous utilisons une boucle pour parcourir le tableau, calculer la somme de chaque nombre et envoyer le résultat au canal.

Dans la fonction principale, nous définissons d'abord un tableau nums. Ensuite, nous créons un canal. Nous utilisons deux goroutines pour calculer la somme de la première moitié et de la seconde moitié du tableau et les envoyer au canal. Enfin, nous lisons tous les résultats du canal et les additionnons pour obtenir la somme du tableau.

Il est à noter que lorsque nous lisons les données d'une chaîne, si la chaîne n'a aucune donnée à lire, le programme sera bloqué. Par conséquent, lors de la lecture du canal, nous utilisons le symbole "<-" pour indiquer au programme qu'il s'agit d'une opération de lecture, et le programme ne doit continuer son exécution que lorsqu'il y a des données à lire dans le canal.

En général, Golang est un langage de programmation très puissant qui fournit de nombreux outils et mécanismes pour réaliser la concurrence. En utilisant les deux mécanismes goroutine et canal, nous pouvons facilement implémenter des opérations simultanées, y compris la sommation simultanée. J'espère que cet article pourra fournir de l'aide et de l'inspiration aux passionnés de programmation Golang.

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!

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