Sobes.tech
Junior — Middle

Jak goroutine zjistí, že jí byl prostřednictvím kontextu zaslán signál o ukončení?

sobes.tech AI

Odpověď od AI

Gorutina obdrží signál o dokončení prostřednictvím kontextu pomocí kanálu, který poskytuje objekt context.Context. Obvykle se používá metoda Done(), která vrací kanál, který se uzavře při zrušení kontextu. Gorutina může tento kanál poslouchat v cyklu nebo select a reagovat na jeho uzavření, což znamená signál o dokončení nebo zrušení operace.

Příklad:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    select {
    case <-ctx.Done():
        // Kontext byl zrušen, ukončujeme
        fmt.Println("Gorutina ukončena")
        return
    // jiné případy
    }
}()

// později zavoláme cancel() k signalizaci ukončení
cancel()