ゴルーチンでは、バッファーなしチャネルは、データが利用可能になるまで受信者に対するブロック メカニズムを実装します。ただし、同じチャネル上に複数の受信者が存在する場合のブロックの動作は不明のままです。
複数の受信者を持つチャネルに値を送信する際、言語は次のように指定します。
これは、最終的にデータを受信してブロックを解除する受信者が、特定の順序や優先順位なしでランダムに選択されることを意味します。これにより、特定の受信者が飢餓状態になる可能性を排除しながら、公平性が保証されます。
select ステートメントの仕様は、この動作を明らかにします。
複数の受信機を持つバッファリングされていないチャネルの場合、ランダムな選択後に利用可能になる最初の通信がデータを受信し、
複数の受信者を持つバッファリングされていないチャネルの場合、受信者へのデータの配信はランダムかつ非決定的であり、特定の順序や優先順位がなくても受信者間の公平性が確保されます。
以上が複数のレシーバーを備えた Go のバッファーなしチャネルでのデータ配信はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。