"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 여러 고루틴을 어떻게 우아하게 종료 할 수 있습니까?

Go에서 여러 고루틴을 어떻게 우아하게 종료 할 수 있습니까?

2025-02-07에 게시되었습니다
검색:943

How Can I Gracefully Terminate Multiple Goroutines in Go?

여러 고 루틴의 종료를 조정하는

package main

import (
    "context"
    "sync"
)

func main() {
    // Create a context and a function to cancel it
    ctx, cancel := context.WithCancel(context.Background())

    // Initialize a wait group to track goroutine completion
    wg := sync.WaitGroup{}
    wg.Add(3) // Add 3 goroutines to the wait group

    // Launch three goroutines
    // Each goroutine listens for the context to be done
    go func() {
        defer wg.Done()
        for {
            select {
            case  

How Can I Gracefully Terminate Multiple Goroutines in Go?

. 일반적인 접근 방식 중 하나는 채널을 사용하여 완료를 신호하는 것입니다. 그러나이 방법은 고 루틴이 예상 순서대로 종료되지 않으면 "폐쇄 채널"공황으로 이어질 수 있습니다. 더 나은 솔루션에는 컨텍스트 사용이 포함됩니다. 컨텍스트는 고리 틴 간의 의사 소통 및 취소 메커니즘을 제공합니다.

패키지 메인에서이를 구현하는 방법은 다음과 같습니다 수입 (수입) "문맥" "동조" )) func main () { // 컨텍스트와 기능을 취소 할 함수를 만듭니다. CTX, 취소 : = context.withCancel (context.background ()) // 대기 그룹을 초기화하여 GorOutine 완료를 추적합니다 wg : = sync.waitgroup {} wg.add (3) // 대기 그룹에 3 개의 고어 라틴을 추가합니다 // 3 개의 goroutines를 시작합니다 // 각 Goroutine은 컨텍스트가 수행 될 수 있도록 듣습니다. go func () { WG.Done을 ​​연기 () 을 위한 { 선택하다 { case

이 예에서 세 번째 고루 틴이 작업을 완료하면 컨텍스트를 취소합니다. 이로 인해 다른 goroutines의 취소가 전파되어 종료됩니다. 컨텍스트를 사용함으로써 당황한 가능성을 제거하고 모든 고루틴이 종료를 효과적으로 조정하도록합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3