Windows에서 실행되지 않는 고루틴: 문제 이해
Go 프로그래밍 영역에서 고루틴은 동시성을 위한 강력한 메커니즘을 제공합니다. 그러나 일부 사용자는 Windows 시스템에서 단순한 고루틴이 실행되지 않는 예상치 못한 동작을 경험했습니다.
이 수수께끼의 문제를 해결하려면 제공된 코드 조각을 자세히 살펴보겠습니다.
<code class="go">package main import ( "fmt" ) func test() { fmt.Println("test") } func main() { go test() }</code>
터미널을 우아하게 만들기 위해 "테스트"를 기대할 수도 있지만 침묵이 우세합니다. 메시지와 오류 메시지가 모두 없으면 개발자는 머리를 긁적일 수 있습니다.
이 미스터리를 해결하는 열쇠는 GOROUTINE 실행의 비동기적 특성에 있습니다. 기존 스레드와 달리 고루틴은 프로그램의 기본 실행을 차단하지 않습니다. 결과적으로 프로그램은 호출된 함수가 완료될 때까지 기다리지 않고 진행됩니다.
이 상황을 해결하려면 고루틴이 실행될 때까지 필요한 대기 시간을 제공하는 메커니즘을 사용해야 합니다.
해결책: 고루틴 실행 보장
한 가지 접근 방식은 Go 문을 활용하는 것입니다.
<code class="go">time.Sleep(10 * time.Second)</code>
고루틴 호출 후에 이 문을 도입함으로써 프로그램 실행을 10초 동안 효과적으로 일시 중지합니다. 따라서 고루틴이 작업을 실행하는 데 충분한 시간을 부여합니다.
대체 솔루션은 sync.WaitGroup을 사용하는 것입니다:
<code class="go">import ( "sync" ) func main() { wg := new(sync.WaitGroup) wg.Add(1) go func() { fmt.Println("test") wg.Done() // Signal completion of the function }() wg.Wait() }</code>
이 예에서 sync.WaitGroup 개체는 기본 고루틴이 진행하기 전에 모든 하위 고루틴이 완료될 때까지 기다립니다.
이러한 기술을 채택하면 Windows에서 실행되지 않는 고루틴 문제를 효과적으로 해결할 수 있습니다.
위 내용은 내 고루틴이 Windows에서 실행되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!