Goroutine でメッセージキューを実装するには? make 関数を使用してバッファなしチャネルを作成します。 <- 演算子を使用してメッセージを送信します。メッセージを受信するには、-> 演算子を使用します。
Goroutine でメッセージキューを実装するにはどうすればよいですか?
はじめに
Go のゴルーチンは、並列実行コードの作成に使用できる軽量の同時実行プリミティブです。メッセージ キューは、Goroutine がメッセージを非同期に送受信できるようにする通信メカニズムです。このチュートリアルでは、チャネルを使用して Go でメッセージ キューを実装する方法を紹介し、実践的なケースを示します。
メッセージキューの実装
Goのチャネルは、ゴルーチン間で値を転送するために使用できる双方向通信パイプです。チャネルを作成するには、make
関数を使用します。例: 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) }() }
メッセージを送信する
メッセージを送信するには、チャネルの<-
演算子を使用します。例: 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
をチャネルに送信します。 メッセージを受信する
メッセージを受信するには、チャネルの->
演算子を使用します。例: rrreee
このコードはチャネルから値を受け取り、それをmsg
変数に保存します。 🎜🎜🎜実践的なケース🎜🎜🎜単純なプロデューサー/コンシューマー アプリケーションを作成しましょう。プロデューサーの Goroutine がメッセージを送信し、コンシューマーの Goroutine がこれらのメッセージを受信して処理します。 🎜🎜🎜プロデューサー コード🎜🎜rrreee🎜🎜コンシューマー コード🎜🎜rrreee🎜 この例では、プロデューサーは 1 秒ごとに 1 つのメッセージをチャネルに送信し、コンシューマーは同じ頻度でチャネルからこれらのメッセージを受信して処理します。 🎜以上がGoroutine でメッセージキューを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。