Junior — Middle
Kā pareizi apturēt goroutine izpildi, izmantojot kontekstu Go?
sobes.tech AI
Atbilde no AI
Lai pareizi apturētu goroutine Go valodā, bieži tiek izmantots context pakets. Tiek izveidots konteksts ar iespēju to anulēt (context.WithCancel), kas tiek nodots goroutine. iekš goroutine, stāvoklis tiek pārbaudīts periodiski caur <-ctx.Done(). Kad tiek izsaukta anulēšanas funkcija, kanāls Done() tiek aizvērts, un goroutine var pareizi beigt darbu.
Piemērs:
func worker(ctx context.Context) {
for {
select {
case <-ctx.Done():
fmt.Println("Goroutine pārtraukta")
return
default:
// veikt darbu
}
}
}
func main() {
ctx, cancel := context.WithCancel(context.Background())
go worker(ctx)
// pēc noteikta laika pārtrauc goroutine
time.Sleep(time.Second)
cancel()
time.Sleep(time.Millisecond * 100) // lai goroutine varētu pabeigt darbu
}
Šī pieeja ļauj droši un kontrolēti pārtraukt goroutine bez nedrošām metodēm.