장기 실행되는 Go 프로그램 실행 유지
Go에서 장기 실행 서버를 실행할 때 주요 기능이 종료되는 것을 방지하는 것이 중요합니다. 프로그램을 계속 유지하기 위해서입니다. 일반적인 방법 중 하나는 fmt.Scanln()을 사용하여 실행을 무기한 일시 중지하는 것이지만 이 접근 방식은 최적이 아닐 수 있습니다.
차단 기반 솔루션
더 나은 솔루션은 다음과 같습니다. main이 종료되는 것을 방지하기 위해 차단 작업을 사용합니다. 다음 코드를 고려하세요.
package main import ( "fmt" "time" ) func main() { go forever() select {} // block forever } func forever() { for { fmt.Printf("%v+\n", time.Now()) time.Sleep(time.Second) } }
이 예시에서 select {}는 기본 고루틴을 무기한 차단하는 데 사용됩니다. 이는 다중화 채널의 작업이 완료될 때까지 무기한 대기하는 차단 선택 작업을 생성합니다. select 문에는 채널이 없으므로 절대로 종료되지 않습니다.
기타 고려 사항
요약하자면 다음을 사용합니다. 차단 작업(예: select {})은 장기 실행 Go 프로그램을 활성 상태로 유지하기 위한 안정적인 방법입니다. 이 접근 방식을 우아한 종료 처리 및 유휴 감지 메커니즘과 결합하면 강력하고 안정적인 시스템이 보장됩니다.
위 내용은 오랫동안 실행되는 Go 프로그램이 종료되지 않도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!