php エディター Youzi は、プログラミングの問題を解決するときに、「ゴルーチンがスリープされています」という一般的なエラー メッセージに遭遇することがあります。このエラーは通常、プロデューサーとコンシューマーの問題に関連しています。プロデューサーとコンシューマーの問題は、同時プログラミングにおける古典的なシナリオであり、1 つ以上のプロデューサーがデータを生成し、1 つ以上のコンシューマーがそれを処理のために取り出します。コンシューマーがデータを処理できるよりも早くプロデューサーがデータを生成すると、ゴルーチン (Go 言語の軽量スレッド) がスリープ状態になる可能性があります。この記事では、このエラーが発生する理由と解決策を説明します。
これは、go ルーチンのプロデューサーと複数のコンシューマーのコードです。 プロデューサはチャネルに情報を注入しており、複数のコンシューマ (それぞれゴールーチン経由) がそれを並行して読み取る必要があります。
リーリーこれはプレイグラウンドへのリンクです - https://go.dev/play/p/yndataeexpb
私が受け取ったエラーはこれです -
###1つ 2番 c 致命的なエラー: すべてのゴルーチンがスリープ状態です - デッドロック! 解決策プロデューサーが終了したらチャネルを閉じて、コンシューマーがいつ停止すべきかを認識できるようにします。 リーリー待機グループにコンシューマーの作業が終了したことを知らせます:
リーリー以上がプロデューサー コンシューマーの問題により、ゴルーチンがスリープ状態であるというエラーが発生するのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。