Windows에서 기능하지 않는 고루틴의 수수께끼 이해
동시성 영역에서 고루틴은 Go에서 경량 스레드 역할을 합니다. 그러나 일부 프로그래머는 Windows에서 고루틴이 실행되지 않는 예상치 못한 문제에 직면했습니다. 이 수수께끼를 풀기 위해 근본적인 문제를 파헤쳐 보겠습니다.
근본 원인: 비동기 실행
기존 스레드와 달리 고루틴은 비동기식으로 실행됩니다. 호출된 함수가 완료될 때까지 기다리지 마세요. 이는 효율적인 동시성을 허용하지만, 고루틴이 실행되기 전에 주 함수가 종료되면 문제가 발생할 수 있습니다.
실행 격차 극복
고루틴이 작업을 완료하는 데 충분한 시간을 갖도록 하려면 프로그램 종료를 지연시키는 메커니즘을 포함하는 것이 중요합니다. 일반적인 접근 방식 중 하나는 지정된 기간 동안 프로그램 실행을 일시 중지하는 "sleep" 문을 도입하는 것입니다. 예를 들어, 다음 코드는 프로그램이 10초 동안 기다리도록 하여 고루틴에 출력을 인쇄할 충분한 시간을 제공합니다.
package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }
출력:
test
이 기술을 사용하면, 프로그램이 고루틴의 실행이 완료될 때까지 기다리도록 하여 예상되는 출력을 관찰할 수 있습니다.
위 내용은 고루틴이 때때로 Windows에서 실행되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!