Junior — Middle
Jak lze spravovat stav a ukončení gorutiny v Go?
sobes.tech AI
Odpověď od AI
V Go je řízení stavu a ukončení gorutin obvykle prováděno pomocí kanálů (channels) a kontextů (context).
- Kanály umožňují přenos signálů mezi gorutinami. Například lze vytvořit kanál pro oznámení o nutnosti ukončení:
stop := make(chan struct{})
func() {
for {
select {
case <-stop:
return // Ukončení gorutiny
default:
// Provádění práce
}
}
}()
// Pro zastavení gorutiny:
close(stop)
- Balíček context poskytuje pohodlný způsob, jak spravovat životnost gorutin, zejména při práci s požadavky nebo dlouhotrvajícími operacemi:
ctx, cancel := context.WithCancel(context.Background())
func(ctx context.Context) {
for {
select {
case <-ctx.Done():
return // Ukončení gorutiny
default:
// Práce
}
}
}(ctx)
// Pro zastavení:
cancel()
Tímto způsobem gorutiny poslouchají signály přes kanály nebo kontexty a správně ukončí práci při jejich obdržení.