Go で MPMC チャネルを使用すると、ゴルーチン間の通信を効率的に実装できます。主な手順は次のとおりです: make 関数を呼び出して MPMC チャネルを作成します: ch := make(chan int,bufferSize)、ここで int はチャネルのデータ型とbufferSizeです。バッファ容量です。データを MPMC チャネルに書き込むには、ch
マルチプロデューサー マルチコンシューマー (MPMC) チャネルは、複数の Goroutine が同時にデータの書き込みと読み取りをできるようにする特別なタイプの Go チャネルです。これは、Goroutine 間の効率的な通信に役立つツールになります。
MPMC チャネルを作成するには、組み込みの make
関数を使用できます: make
函数:
ch := make(chan int, bufferSize)
其中:
ch
是通道变量。int
是通道传递的数据类型。bufferSize
是通道的缓冲容量。写入 MPMC 通道非常简单:
ch <- value
其中 value
是要写入通道的数据。
从 MPMC 通道读取也很简单:
value := <-ch
其中 value
package main import ( "fmt" "sync" ) func main() { const bufferSize = 10 ch := make(chan int, bufferSize) var wg sync.WaitGroup wg.Add(2) // 生产者 Goroutine go func() { defer wg.Done() for i := 0; i < 100; i++ { ch <- i } close(ch) }() // 消费者 Goroutine go func() { defer wg.Done() for value := range ch { fmt.Println(value) } }() wg.Wait() }
ch
はチャネル変数です。 int
はチャネルによって渡されるデータ型です。 bufferSize
はチャネルのバッファ容量です。 rrreee
ここで、value
はチャネルに書き込まれるデータです。 🎜🎜MPMC チャネルからの読み取り🎜🎜 MPMC チャネルからの読み取りも簡単です: 🎜rrreee🎜 ここで、value
はチャネルから読み取られたデータです。 🎜🎜実践的なケース🎜🎜 以下は、MPMC チャネルを使用してゴルーチン間で効率的に通信する方法を示す実践的なケースです: 🎜rrreee🎜 この例では、プロデューサーのゴルーチンは 100 個の整数を MPMC チャネルに書き込みます。別のコンシューマー Goroutine は、これらの整数をチャネルから読み取り、出力します。 MPMC チャネルを使用すると、Goroutine 間でデータが効率的かつ確実に転送されるようになります。 🎜以上がGo の Goroutine 間の効率的な通信のために MPMC チャネルを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。