Junior — Middle
Ako spravovať stav a ukončenie goroutine v Go?
sobes.tech AI
Odpoveď od AI
V Go je riadenie stavu a ukončení goroutine zvyčajne prebieha pomocou kanálov (channels) a kontextov (context).
- Kanály umožňujú prenos signálov medzi goroutine. Napríklad, môžete vytvoriť kanál na oznámenie potreby ukončenia:
stop := make(chan struct{})
func() {
for {
select {
case <-stop:
return // Ukončenie goroutine
default:
// Práca
}
}
}()
// Na zastavenie goroutine:
close(stop)
- Balík context poskytuje pohodlný spôsob, ako spravovať životnosť goroutine, najmä pri práci s požiadavkami alebo dlhými operáciami:
ctx, cancel := context.WithCancel(context.Background())
func(ctx context.Context) {
for {
select {
case <-ctx.Done():
return // Ukončenie goroutine
default:
// Práca
}
}
}(ctx)
// Na zastavenie:
cancel()
Takto goroutine počúvajú signály cez kanály alebo kontexty a správne ukončia prácu pri ich prijatí.