go チャネルに問題があり、閉じられたチャネルで送信しています

WBOY
リリース: 2024-02-11 18:21:08
転載
1213 人が閲覧しました

go 通道出现问题,在封闭通道上发送

php エディター Youzi は、Go 言語を使用した開発プロセス中にいくつかの問題に遭遇することがあります。その 1 つは、クローズド チャネルでデータを送信するときの問題です。この問題により、チャネルのブロックやプログラムの停止が発生し、アプリケーション全体の動作に影響を与える可能性があります。この問題を解決する前に、まずクローズド チャネルとは何か、またクローズド チャネルでのデータ送信に問題がある理由を理解する必要があります。次に、この問題を詳しく調べて、Go アプリケーションを修正および最適化するためのソリューションを提供します。

質問の内容

致命的なエラーが発生します:「閉じたチャネルで送信しています」というコードが実行されることがあります。複数の解決策を試しましたが、どれも機能しませんでした。これはコードの表現ですこれは理解しやすく、テストに使いやすいです:

CB14CE50B218D8EAB916B15CD95527D5

私が望むのは、リクエスト関数を n 回開始して最初に完了したリクエストを取得し、その後チャネルを閉じてチャネルにそれ以上のリクエストを送信しないことです。どのリクエストも正常に完了しなかった場合は、すべてのゴルーチンが完了するまで待機します。 .

これは、2 つ以上のゴルーチンがチャネルが閉じられているかどうかを同時にチェックし、両方がチャネルに書き込もうとし、致命的なエラーが発生するために起こると思います。

###間違い:### リーリー

なぜこれが起こるのか説明できる人はいますか?

よろしくお願いします

解決策

問題は、受信側のゴルーチン (

main

) が途中で終了してしまうことです outputCh。他の goroutine がまだ送信を試みることができます。 これは別の方法です:

リーリー

以上がgo チャネルに問題があり、閉じられたチャネルで送信していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!