#php エディタ Apple は本日、errgroup を使用して Go ワーク プールを実装する方法を紹介します。これにより、ゴルーチンがスタックする問題が解決されます。並行プログラミングではゴルーチンを利用することで効率的な並行処理を実現できますが、特定のゴルーチンでエラーやスタックが発生するとプログラム全体の実行に影響を及ぼします。 errgroup パッケージを使用すると、ゴルーチンの実行をエレガントに管理し、エラーが発生したときにエラーを処理して、プログラムの安定性と信頼性を確保できます。これがどのように実装されるかを見てみましょう。
任意の goroutine のエラーをキャッチできるように、errgroup を使用してワーカー プール パターンを実装しました。私の詳細は次のとおりです:
リーリーワーカー関数の実装は次のようになります:
リーリーcalluserapi は 403 禁止エラーを返します。これは g.wait() を呼び出し、非 nil エラーが発生した場合はすべてのゴルーチンを直ちに停止する必要があります。しかし、ここではそうではなく、g.wait() は決して呼び出されません。
いくつかの問題があります:
calluserapi
がエラーを返した場合、これは起こりません。
リーリー
この新しいタイプを使用するようにワーカー スレッドを変更します。さらに、jobs
が閉じられたときにワーカーが終了するようにワーカーを変更します。
リーリー
それらをメイン goroutine に貼り付けます:
リーリー
以上がerrgroup を使用して Go ワークプールを実装すると、ゴルーチンがスタックするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。