Maison >développement back-end >Golang >Mettre en œuvre une programmation simultanée Select Channels Go efficace via Golang

Mettre en œuvre une programmation simultanée Select Channels Go efficace via Golang

WBOY
WBOYoriginal
2023-09-29 12:24:35936parcourir

通过golang实现高效的Select Channels Go并发式编程

Efficient Select Channels Go programmation simultanée via Golang

Introduction :
Dans le développement de logiciels d'aujourd'hui, la programmation simultanée est devenue un besoin courant. La programmation simultanée nous permet d'utiliser davantage les processeurs multicœurs, améliorant ainsi les performances et l'efficacité des programmes. L'une des caractéristiques de Golang est qu'il offre un solide support pour la programmation simultanée, dont les canaux constituent une partie importante de la programmation simultanée dans Golang. Cet article expliquera comment utiliser l'instruction Select et les canaux dans Golang pour obtenir une programmation simultanée efficace et fournira des exemples de code spécifiques.

  1. Channels et instructions Select dans Golang
    Les canaux sont un mécanisme utilisé pour communiquer entre différents processus Go. Il propose deux opérations de base : envoyer et recevoir. Envoyez des données au canal via l'opération d'envoi et récupérez les données du canal via l'opération de réception. L'instruction Select dans Golang est utilisée pour sélectionner entre plusieurs canaux (c'est-à-dire recevoir des données de manière non bloquante), réalisant ainsi une programmation simultanée.
  2. Utilisez l'instruction Select pour la programmation simultanée
    Voici les étapes de base pour utiliser l'instruction Select pour la programmation simultanée :

Étape 1 : Créer des canaux qui nécessitent une interaction
Tout d'abord, nous devons créer des canaux qui nécessitent une interaction. Vous pouvez utiliser la fonction make() pour créer un canal.

c := make(chan int)

Étape 2 : Créer des Goroutines et communiquer via des canaux
Ensuite, nous pouvons créer plusieurs Goroutines et communiquer des données via des canaux. Dans les goroutines, nous pouvons utiliser des boucles infinies pour envoyer des données en continu.

go func() {
    for {
        c <- 1 // 发送数据到Channel
    }
}()

Étape 3 : Utilisez l'instruction Select pour la sélection des données
Enfin, nous pouvons utiliser l'instruction Select pour sélectionner le canal qui doit recevoir des données et traiter les données qu'il contient.

for {
    select {
        case <-c:
            // 处理接收到的数据
    }
}
  1. Exemple : Calculez la somme des tâches simultanées
    Ci-dessous, nous utilisons un exemple de code spécifique pour montrer comment utiliser les instructions Channels et Select pour implémenter la programmation simultanée. Nous calculerons la somme d'une série de nombres, distribuerons la tâche à plusieurs goroutines et utiliserons les canaux pour communiquer.

package main

import "fmt"

func calculateSum(numbers []int, c chan int) {

sum := 0
for _, num := range numbers {
    sum += num
}
c <- sum

}

func main() {

numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
workerCount := 5
c := make(chan int)

for i := 0; i < workerCount; i++ {
    go calculateSum(numbers[i*2:i*2+2], c)
}

totalSum := 0
for i := 0; i < workerCount; i++ {
    totalSum += <-c
}

fmt.Println("Total Sum:", totalSum)

}

Dans le code ci-dessus, nous d'abord Une fonction calculateSum() est définie pour calculer la somme d'une partie des nombres du tableau et envoyer le résultat via le Channel. Ensuite, nous créons un tableau de 10 nombres et spécifions le nombre de goroutines à utiliser. Ensuite, nous avons créé un canal c et utilisé goroutine pour attribuer des tâches à différents Goroutines. Enfin, nous recevons les données du canal à l'aide de l'instruction Select via une boucle for et calculons la somme du tableau. Enfin, nous imprimons les résultats.

Conclusion :
En utilisant l'instruction Select et les canaux dans Golang, nous pouvons réaliser une programmation simultanée efficace. Ce modèle de programmation simultanée permet une meilleure utilisation des processeurs multicœurs et améliore les performances et l'efficacité du programme. Cet article explique comment utiliser les instructions Channels et Select dans Golang pour la programmation simultanée et fournit un exemple de code spécifique. Les lecteurs peuvent modifier le code en fonction de leurs propres besoins et explorer davantage le monde de la programmation simultanée 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!

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