チャネルを読み取らずに閉じられたチャネルを確認する
チャネルを読み取らずにチャネルが閉じられているかどうかを判断する必要がある状況では、次の方法があります。現在、Go でこれを直接行う方法はありません。 @Jimt によって提供されたコード例は、ワーカーとコントローラー モードの実践的な図として機能します。ただし、ワーカーが終了した後にワーカー チャネルをワーカー スライスから削除しようとすると、問題が発生します。
問題について
ワーカー チャネルを直接閉じる閉じたチャネルへの書き込みは許可されていないため、worker() 内でコントローラが書き込みを試みるとパニックが発生します。一方、ミューテックスを使用して同時アクセスを防止すると、ワーカーがチャネルから読み取りを行わず、書き込みがブロックされるため、デッドロックが発生します。
考えられる解決策
結論
チャネルのバッファ サイズを直接確認するメカニズムが欠如している読み取らずに閉じられることは、特定のシナリオにおける制限とみなされます。回避策は存在しますが、最適な解決策ではない可能性があります。閉じられたチャネルをチェックする関数の実装は、Go プログラミング言語の将来のバージョンへの貴重な追加となる可能性があります。
以上がチャンネルを読み取らずにGoでチャンネルが閉じられているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。