Sobes.tech
Junior — Middle

Cum află o goroutine că i s-a transmis un semnal de finalizare prin context?

sobes.tech AI

Răspuns de la AI

Gorutina primește semnalul de finalizare prin intermediul unui context folosind un canal, care furnizează obiectul context.Context. De obicei, se folosește metoda Done(), care returnează un canal care se închide atunci când contextul este anulat. Gorutina poate asculta acest canal într-un ciclu sau select și poate reacționa la închiderea sa, ceea ce indică un semnal de finalizare sau anulare a operației.

Exemplu:

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

go func() {
    select {
    case <-ctx.Done():
        // Contextul a fost anulat, încheiem
        fmt.Println("Gorutina a fost finalizată")
        return
    // alte cazuri
    }
}()

// mai târziu, apelăm cancel() pentru a semnala finalizarea
cancel()