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

Programmation simultanée et utilisation de coroutines en langage Go

WBOY
Libérer: 2024-03-01 21:48:04
original
843 Les gens l'ont consulté

Programmation simultanée et utilisation de coroutines en langage Go

En tant que langage de programmation puissant, le langage Go est connu pour sa simplicité et son efficacité. Parmi eux, sa puissante programmation simultanée et son utilisation de coroutines sont l’un de ses plus grands points forts. Cet article présentera les principes et l'utilisation spécifique de la programmation simultanée et des coroutines en langage Go, et fournira quelques exemples de code pour aider les lecteurs à mieux comprendre.

1. Programmation simultanée

En langage Go, la programmation simultanée est implémentée via goroutine, qui peut être comprise comme un thread léger. Par rapport aux threads traditionnels, les goroutines nécessitent moins de frais de création et de planification et peuvent donc mieux prendre en charge la programmation simultanée.

1. Créez et démarrez goroutine

En langage Go, utilisez le mot-clé go pour créer et démarrer goroutine. L'exemple est le suivant : go关键字来创建并启动goroutine,示例如下:

package main

import (
    "fmt"
    "time"
)

func printNumber(n int) {
    for i := 0; i < n; i++ {
        fmt.Println(i)
        time.Sleep(time.Millisecond * 500)
    }
}

func main() {
    go printNumber(5)
    time.Sleep(time.Second * 3)
    fmt.Println("Main goroutine exits")
}
Copier après la connexion

在上面的示例中,通过go printNumber(5)创建了一个goroutine来打印0到4的数字,同时主goroutine继续执行并在3秒后退出。这样就实现了并发执行。

2. 使用通道进行goroutine间的通信

在并发编程中,通常需要goroutine之间进行通信。Go语言提供了通道(channel)来实现goroutine之间的通信。

package main

import (
    "fmt"
)

func sendMessages(messages chan string) {
    messages <- "Hello"
    messages <- "World"
    close(messages)
}

func main() {
    messages := make(chan string)
    go sendMessages(messages)

    for msg := range messages {
        fmt.Println(msg)
    }
}
Copier après la connexion

在上面的示例中,通过通道messages实现了sendMessages和主goroutine之间的通信。其中,close(messages)用于关闭通道,避免死锁。

二、协程的使用

在Go语言中,协程(Coroutine)是一个轻量级的线程,可以看作是一种用户态的线程,由用户程序控制。Go语言中的协程被称为goroutine,通过go关键字创建和启动。协程可以实现任务的快速切换和高效的并发执行。

1. 协程的使用示例

package main

import (
    "fmt"
)

func add(a, b int, result chan int) {
    sum := a + b
    result <- sum
}

func main() {
    result := make(chan int)
    go add(2, 3, result)

    sum := <-result
    fmt.Println("Sum:", sum)
}
Copier après la connexion

在上面的示例中,通过go add(2, 3, result)创建了一个goroutine来计算2和3的和,通过通道resultrrreee

Dans l'exemple ci-dessus, utilisez go. printNumber (5)Création d'une goroutine pour imprimer les nombres de 0 à 4, tandis que la goroutine principale continuait à s'exécuter et se terminait après 3 secondes. Cela permet une exécution simultanée.

2. Utilisez des canaux pour la communication entre les goroutines

En programmation simultanée, la communication entre les goroutines est généralement requise. Le langage Go fournit des canaux pour mettre en œuvre la communication entre les goroutines. 🎜rrreee🎜Dans l'exemple ci-dessus, la communication entre sendMessages et la goroutine principale est réalisée via le canal messages. Parmi eux, close(messages) est utilisé pour fermer le canal afin d'éviter un blocage. 🎜🎜2. L'utilisation de la coroutine🎜🎜En langage Go, la coroutine est un thread léger, qui peut être considéré comme un thread en mode utilisateur et est contrôlé par le programme utilisateur. Les coroutines dans le langage Go sont appelées goroutines, qui sont créées et démarrées via le mot-clé go. Les coroutines peuvent permettre une commutation rapide des tâches et une exécution simultanée efficace. 🎜🎜1. Exemple d'utilisation de coroutine🎜rrreee🎜Dans l'exemple ci-dessus, une goroutine est créée pour calculer la somme de 2 et 3 via go add(2, 3, result), via le canalresult implémente la transmission des résultats. 🎜🎜Conclusion🎜🎜Cet article présente l'utilisation de la programmation simultanée et des coroutines dans le langage Go, et fournit des exemples de code pour aider les lecteurs à comprendre. La programmation simultanée et les coroutines sont l'une des fonctionnalités les plus puissantes du langage Go, qui peuvent améliorer efficacement les performances et l'efficacité du programme. J'espère que cet article sera utile aux lecteurs pour apprendre et utiliser la programmation simultanée et les coroutines dans le langage Go. 🎜

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!

Étiquettes associées:
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!