Windows에서 기능하지 않는 고루틴의 수수께끼 이해
동시성 영역에서 고루틴은 Go에서 경량 스레드 역할을 합니다. 그러나 일부 프로그래머는 Windows에서 고루틴이 실행되지 않는 예상치 못한 문제에 직면했습니다. 이 수수께끼를 풀기 위해 근본적인 문제를 파헤쳐 보겠습니다.
근본 원인: 비동기 실행
기존 스레드와 달리 고루틴은 비동기식으로 실행됩니다. 호출된 함수가 완료될 때까지 기다리지 마세요. 이는 효율적인 동시성을 허용하지만, 고루틴이 실행되기 전에 주 함수가 종료되면 문제가 발생할 수 있습니다.
실행 격차 극복
To 고루틴이 작업을 완료하는 데 충분한 시간을 갖도록 하려면 프로그램 종료를 지연시키는 메커니즘을 포함하는 것이 중요합니다. 일반적인 접근 방식 중 하나는 지정된 기간 동안 프로그램 실행을 일시 중지하는 "sleep" 문을 도입하는 것입니다. 예를 들어, 다음 코드는 프로그램이 10초 동안 기다리도록 하여 고루틴이 출력을 인쇄할 수 있는 충분한 시간을 제공합니다.
package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }
출력:
test
이 기술을 사용하면 프로그램이 고루틴의 실행이 완료될 때까지 기다려 예상되는 출력을 관찰할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3