Maison >développement back-end >Golang >Conseils pour tirer parti de la programmation simultanée à l'aide des fonctions Golang

Conseils pour tirer parti de la programmation simultanée à l'aide des fonctions Golang

WBOY
WBOYoriginal
2024-04-12 21:21:011289parcourir

Utilisez Golang pour implémenter la programmation simultanée : Créer une goroutine : utilisez le mot-clé go pour créer une goroutine de thread légère. Utilisation de canaux : les canaux sont des structures de données pour la communication entre des goroutines qui peuvent envoyer et recevoir des valeurs. Cas pratique : Calcul parallèle : Créez un tableau de goroutines pour calculer la somme de nombres en parallèle, améliorant ainsi considérablement les performances de calcul.

Conseils pour tirer parti de la programmation simultanée à laide des fonctions Golang

Utilisez les fonctions Golang pour implémenter la programmation simultanée

Dans Golang, la concurrence est obtenue via des goroutines et des canaux. Les goroutines sont des threads légers et les canaux sont un mécanisme de communication entre les goroutines.

Créer une goroutine

Utilisez le mot-clé go pour créer une goroutine. Cela créera une nouvelle goroutine et exécutera la fonction en même temps.

func main() {
    // 创建一个打印"Hello, world!"的goroutine
    go fmt.Println("Hello, world!")
}

Channel

Channel est une structure de données utilisée pour la communication entre les goroutines. Il peut envoyer et recevoir des valeurs.

// 创建一个发送字符串到通道的goroutine
func send(ch chan string) {
    ch <- "Hello, channel!"
}

// 创建一个接收通道中字符串的goroutine
func receive(ch chan string) {
    fmt.Println(<-ch)
}

Cas pratique : calcul parallèle

Nous utilisons la concurrence pour calculer la somme d'un ensemble de nombres en parallèle. Nous créons un tableau de goroutines, et chaque goroutine est responsable du calcul de la somme d'une partie du tableau.

func main() {
    // 创建要计算和的数组
    nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    // 创建goroutine通道
    var ch = make(chan int)

    // 创建goroutine数组,每个goroutine负责计算数组一部分的和
    for i := 0; i < len(nums); i++ {
        go func(i int) {
            sum := 0
            for j := i; j < len(nums); j++ {
                sum += nums[j]
            }
            ch <- sum
        }(i)
    }

    // 从goroutine接收结果并求和
    totalSum := 0
    for i := 0; i < len(nums); i++ {
        totalSum += <-ch
    }

    fmt.Println("Total sum:", totalSum)
}

En utilisant la concurrence, nous pouvons améliorer considérablement les performances de calcul des sommes.

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