> 백엔드 개발 > Golang > 내 고루틴이 Windows에서 실행되지 않는 이유는 무엇입니까?

내 고루틴이 Windows에서 실행되지 않는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-29 03:50:02
원래의
379명이 탐색했습니다.

Why Aren't My Goroutines Running on Windows?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿