Maison >développement back-end >Golang >Comment implémenter la file d'attente de messages dans Goroutine ?

Comment implémenter la file d'attente de messages dans Goroutine ?

WBOY
WBOYoriginal
2024-06-01 13:50:57558parcourir

Comment implémenter la file d'attente des messages dans Goroutine ? Utilisez la fonction make pour créer un canal sans tampon. Utilisez l'opérateur acae4d8d2f4337b40f9de42bbe579681

如何在 Goroutine 中实现消息队列?

Comment implémenter la file d'attente des messages dans Goroutine ?

Introduction

Les Goroutines dans Go sont des primitives de concurrence légères qui peuvent être utilisées pour créer du code d'exécution parallèle. Une file d'attente de messages est un mécanisme de communication qui permet aux Goroutines d'envoyer et de recevoir des messages de manière asynchrone. Ce didacticiel présentera comment utiliser les canaux pour implémenter des files d'attente de messages dans Go et fournira un cas pratique.

Implémentation de la file d'attente des messages

Channel in Go est un canal de communication bidirectionnel qui peut être utilisé pour transférer des valeurs entre Goroutines. Pour créer une chaîne, utilisez la fonction make. Par exemple : make 函数。例如:

ch := make(chan int)

此代码创建一个无缓冲 channel,这意味着它一次只能容纳一个值。

发送消息

要发送消息,请使用 channel 的 e82c93edb03ae9fc363714375d82ea49 操作符。例如:

msg := <-ch

此代码将从 channel 接收一个值并将其存储在 msg

package main

import "time"

func main() {
    ch := make(chan int)
    go func() {
        for i := 0; i < 10; i++ {
            ch <- i
            time.Sleep(time.Second)
        }
        close(ch)
    }()
}

Ce code crée un canal sans tampon, ce qui signifie qu'il ne peut contenir qu'une seule valeur à la fois.

Envoyer un message

Pour envoyer un message, utilisez l'opérateur 5e316382eaa709726c113a619e778256 de la chaîne. Par exemple :

rrreee

Ce code recevra une valeur du canal et la stockera dans la variable msg. 🎜🎜🎜Cas pratique🎜🎜🎜Créons une application producteur-consommateur simple, où le producteur Goroutine enverra des messages, et le consommateur Goroutine recevra et traitera ces messages. 🎜🎜🎜Code producteur🎜🎜rrreee🎜🎜Code consommateur🎜🎜rrreee🎜Dans cet exemple, le producteur envoie un message à la chaîne chaque seconde, et le consommateur reçoit et traite ces messages de la chaîne à la même fréquence. 🎜

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