>  기사  >  백엔드 개발  >  메인 프로그램이 종료될 때 내 고루틴이 유휴 상태로 유지되는 이유는 무엇입니까?

메인 프로그램이 종료될 때 내 고루틴이 유휴 상태로 유지되는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 17:15:02926검색

Why Does My Goroutine Remain Idle When the Main Program Exits?

고루틴 실행 이해: 내 고루틴이 유휴 상태로 유지되는 이유

Go 코드에서 고루틴과 채널을 실험하려고 했습니다. 목표는 채널에서 지속적으로 읽는 고루틴을 만드는 것이었지만 예상했던 "Entering the goroutine..." 메시지가 나타나지 않았습니다. 이 문서에서는 이 동작의 이유를 살펴봅니다.

제공한 코드에는 다음과 같이 생성된 고루틴이 포함되어 있습니다.

go func(m *chan string) {
    fmt.Println("Entering the goroutine...")
    for {
        fmt.Println(<- *m)
    }
}(&amp;messages)

고루틴이 시작되더라도 기본 프로그램이 즉시 종료되므로 빠르게 종료됩니다. "완료!"를 인쇄한 후. 고루틴은 메인 프로그램과 동시에 실행됩니다. 그러나 메인 프로그램이 종료되면 종료됩니다.

고루틴이 조기에 종료되는 것을 방지하려면 고루틴이 실행되는 동안 메인 프로그램을 계속 실행하는 방법을 찾아야 합니다. 이는 특정 수의 메시지를 기다리는 별도의 채널을 사용하거나, sync.WaitGroup을 사용하거나, 다른 기술을 구현함으로써 달성할 수 있습니다.

Go 블로그는 동시성에 대한 광범위한 가이드를 제공합니다(https://blog .golang.org/go-proverbs) Go에서 동시성이 어떻게 작동하는지에 대한 귀중한 통찰력을 제공합니다.

위 내용은 메인 프로그램이 종료될 때 내 고루틴이 유휴 상태로 유지되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.