Maison >développement back-end >Golang >Comment créer une mémoire partagée Goroutine dans Go ?

Comment créer une mémoire partagée Goroutine dans Go ?

WBOY
WBOYoriginal
2024-06-02 11:32:571002parcourir

Vous pouvez implémenter la mémoire partagée Goroutine via un canal : créez un canal pour spécifier le type d'élément. Démarrez une Goroutine pour écrire des données sur le canal. Utilisez une boucle de plage dans le Goroutine principal pour lire les données du canal. La fin de l'écriture est indiquée par la fermeture du canal.

如何在 Go 中创建一个共享内存的 Goroutine?

Comment créer une mémoire partagée Goroutine en Go ?

Dans Go, la mémoire partagée est implémentée via des canaux. Un canal est essentiellement une file d'attente premier entré, premier sorti (FIFO) pour l'envoi et la réception de valeurs entre Goroutines.

Cas pratique

Créer une mémoire partagée Goroutine est très simple. Voici l'exemple de code :

package main

import (
    "fmt"
    "sync"
)

func main() {
    // 创建一个 channel
    ch := make(chan int)
    
    // 创建 Goroutine 并启动,它将向 channel 写入数据
    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        
        for i := 0; i < 10; i++ {
            ch <- i
        }
        
        // 关闭 channel 表示完成
        close(ch)
    }()
    
    // 从 channel 中读取数据
    for v := range ch {
        fmt.Println(v)
    }
    
    wg.Wait()
}

Explication

  • Lorsque vous créez un canal, vous devez spécifier son type d'élément (dans ce cas, int). int)。
  • go 语句启动一个新的 Goroutine,并将一个函数作为参数传递。
  • 在 Goroutine 中,我们使用一个 for 循环向 channel 写入数据。
  • 当 Goroutine 完成时,可以使用 close(ch)
  • L'instruction go démarre une nouvelle Goroutine et passe une fonction en paramètre.
  • Dans Goroutine, nous utilisons une boucle for pour écrire des données sur le canal.

Lorsque la Goroutine est terminée, vous pouvez utiliser close(ch) pour fermer la chaîne.

🎜Dans le Goroutine principal, nous utilisons une boucle de plage pour lire les données du canal. La boucle de plage ne se terminera pas tant que le canal ne sera pas fermé. 🎜🎜🎜En utilisant des canaux pour la mémoire partagée, nous pouvons transmettre des données en toute sécurité entre Goroutines. 🎜

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