Windows에서 실행되지 않는 고루틴 진단
고루틴의 복잡성을 탐구하기 위해 간단한 테스트를 수행하여 행동. 그러나 "테스트"의 예상 결과는 결코 실현되지 않았습니다. 고루틴에 충분한 시간을 부여하기 위해 for {} 루프가 포함되었음에도 불구하고 프로그램은 오류나 성공의 흔적을 남기지 않고 조용히 유지되었습니다.
문제 공개
자세히 살펴보면 문제의 핵심은 고루틴의 비동기적 특성에 있다는 것이 분명해집니다. 차단 방식으로 순차적으로 실행되는 기존 스레드와 달리 고루틴은 기본 프로그램 실행을 방해하지 않고 동시에 실행되도록 설계되었습니다. 결과적으로 프로그램 실행은 호출된 함수의 완료를 수용하기 위해 일시 중지되지 않습니다.
퍼즐 해결
이 상황을 해결하고 고루틴의 출력을 적절하게 관찰할 수 있도록 하려면, .Sleep() 문을 도입할 수 있습니다. 이 문은 지정된 기간 동안 기본 함수의 실행을 일시 중지하여 고루틴이 작업을 수행하는 데 충분한 시간을 제공합니다. 기간을 0이 아닌 값(예: 10초)으로 설정하면 주 함수가 종료되기 전에 고루틴에 실행하고 출력을 인쇄할 수 있는 충분한 기회가 부여됩니다.
향상된 테스트 사례
수정된 테스트 사례에는 다음과 같이 time.Sleep() 문이 통합되어 있습니다.
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
이 수정을 통해 프로그램은 이제 test() 고루틴을 성공적으로 실행하고 "test"를 콘솔. 이 접근 방식을 사용하면 기본 기능이 종료되기 전에 고루틴이 완료될 때까지 기다리므로 해당 동작을 시각적으로 관찰할 수 있습니다.
위 내용은 내 고루틴이 Windows에서 실행되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!