php エディター Youzi は、Go 言語を使用した開発プロセス中にいくつかの問題に遭遇することがあります。その 1 つは、クローズド チャネルでデータを送信するときの問題です。この問題により、チャネルのブロックやプログラムの停止が発生し、アプリケーション全体の動作に影響を与える可能性があります。この問題を解決する前に、まずクローズド チャネルとは何か、またクローズド チャネルでのデータ送信に問題がある理由を理解する必要があります。次に、この問題を詳しく調べて、Go アプリケーションを修正および最適化するためのソリューションを提供します。
致命的なエラーが発生します:「閉じたチャネルで送信しています」というコードが実行されることがあります。複数の解決策を試しましたが、どれも機能しませんでした。これはコードの表現ですこれは理解しやすく、テストに使いやすいです:
CB14CE50B218D8EAB916B15CD95527D5私が望むのは、リクエスト関数を n 回開始して最初に完了したリクエストを取得し、その後チャネルを閉じてチャネルにそれ以上のリクエストを送信しないことです。どのリクエストも正常に完了しなかった場合は、すべてのゴルーチンが完了するまで待機します。 .
これは、2 つ以上のゴルーチンがチャネルが閉じられているかどうかを同時にチェックし、両方がチャネルに書き込もうとし、致命的なエラーが発生するために起こると思います。
###間違い:### リーリーなぜこれが起こるのか説明できる人はいますか?
よろしくお願いします
解決策
) が途中で終了してしまうことです outputCh
。他の goroutine がまだ送信を試みることができます。
これは別の方法です:
以上がgo チャネルに問題があり、閉じられたチャネルで送信していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。