php エディタ Xiaoxin Go 言語では、チャネルはゴルーチン間でデータを転送するために使用されるメカニズムです。チャネルの動作は、チャネルへのメッセージの送信方法によって異なります。チャネルがバッファリングされていると宣言されると、メッセージを送信するゴルーチンはメッセージをチャネルのバッファに入れてから実行を継続します。チャネルがバッファリングされていないと宣言されている場合、メッセージを送信するゴルーチンは、他のゴルーチンがチャネルからメッセージを受信するまでブロックされます。したがって、チャネルの動作はメッセージがどのように送信されるかによって変化すると言えます。
これら 2 つのコードの実行が異なるのはなぜですか?
致命的なエラーが返されます: すべての goroutines are sleep - Deadlock! ###エラー。
2 番目のケースでは、2 つの値をチャネルに送信するゴルーチンがあり、メインのゴルーチンは送信中にチャネルから 2 回読み取ります。チャネルは 2 つの送信を受け入れませんが、最初の送信操作は最初の読み取りによってブロックされず、2 番目の送信操作は 2 番目の読み取りによってブロックされません。
以上がgo チャネルの動作は、メッセージの送信方法に応じて変わりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。