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 <- pour envoyer des messages. Utilisez l'opérateur ->
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 的 <-
操作符。例如:
ch <- 42
此代码将值 42
发送到 channel。
接收消息
要接收消息,请使用 channel 的 ->
操作符。例如:
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) }() }
Envoyer un message
Pour envoyer un message, utilisez l'opérateur<-
du canal. Par exemple : package main import "time" func main() { ch := make(chan int) go func() { for { msg, ok := <-ch if !ok { break } time.Sleep(time.Second) println(msg) } }() }
42
au canal. Recevoir des messages
Pour recevoir des messages, utilisez l'opérateur->
de la chaîne. Par exemple : rrreee
Ce code recevra une valeur du canal et la stockera dans la variablemsg
. 🎜🎜🎜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!