충돌 발생 시 여러 고루틴 실행 유지
Go에서 여러 고루틴으로 작업할 때 하나의 고루틴이 있는 시나리오를 고려하는 것이 중요합니다. 충돌이나 패닉이 발생하여 잠재적으로 전체 프로그램에 영향을 미칠 수 있습니다. 이를 방지하려면 프로그램은 이러한 상황을 우아하게 처리하여 다른 고루틴이 계속 실행될 수 있도록 해야 합니다.
복구 기능 사용
Go는 내장된 복구( ) 패닉을 처리하고 복구할 수 있는 기능입니다. 이 함수를 사용하려면 지연된 함수 내에서 호출되어야 합니다. 이러한 방식으로 패닉이 발생하면 이를 캡처하고 지연된 함수가 완료된 후 프로그램 실행을 재개합니다.
다음은 Recover()를 활용하는 방법에 대한 예입니다.
func doPanic() { fmt.Println("About to panic") panic("test") } func protect(f func()) { defer func() { if err := recover(); err != nil { fmt.Printf("Recovered: %v", err) } }() f() } func main() { go protect(doPanic) for { time.Sleep(time.Second) fmt.Println("Tick") } }
설명
출력
이 코드가 실행되면 다음과 같이 출력됩니다.
About to panic Recovered: test Tick Tick Tick ...
이는 doPanic이 패닉이 발생하면 프로그램은 복구() 호출로 인해 계속 실행되어 다른 고루틴이 계속 실행될 수 있습니다.
recover()를 사용하면 프로그램이 계속 실행될 수 있지만 근본적인 패닉 발생을 방지할 수는 없다는 점에 유의하는 것이 중요합니다. 따라서 향후 패닉이 재발하지 않도록 패닉의 근본 원인을 파악하고 해결하는 것이 여전히 중요합니다.
위 내용은 Go의 `recover()` 기능은 어떻게 패닉 이후에도 여러 고루틴을 계속 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!