Go では、ゴルーチンはアプリケーションに軽量の同時実行性と並列性を提供します。ただし、1 つのゴルーチンで予期しないクラッシュが発生すると、プログラム全体が停止する可能性があります。この望ましくない動作を防ぐには、他のゴルーチンが影響を受けないように回復力のある戦略を考案することが不可欠です。
ゴルーチンでの予期せぬパニックに対処するには、組み込みの回復機能が必要です。 () 関数を遅延関数内に配置すると、パニック関連のエラーをキャプチャして処理する機能が提供されます。次のように、ヘルパー関数を利用して、この保護を備えたゴルーチンを起動できます。
func protect(f func()) { defer func() { if err := recover(); err != nil { log.Printf("Recovered: %v", err) } }() f() }
このヘルパー関数を利用することで、ゴルーチンをクラッシュから保護し、他のゴルーチンが実行を継続できるようにします。次の例を考えてみましょう。
func main() { go protect(doPanic) for { time.Sleep(time.Second) fmt.Println("tick") } }
この例では、doPanic で起動されたゴルーチンは、継続的に「tick」ステートメントを出力するメインのゴルーチンに影響を与えることなくパニックを起こすことができます。
Go の reverse() 関数を活用し、ゴルーチンの保護ラッパーを作成することで、開発者はパニックに積極的に対処し、メンテナンスを行うことができます。アプリケーション内での復元力。このアプローチにより、予期しないクラッシュによって他のゴルーチンの適切な機能が中断されず、アプリケーションの安定性と継続性が維持されます。
以上がGo の「recover()」関数はどのようにして Goroutine のクラッシュに対する回復力を確保できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。