Junior — Middle
Goда goroutineдин абалы жана аяктоо кандай башкарылат?
sobes.tech AI
AIден жооп
Goда, күйдү башкаруу жана goroutine'лердин аякталышы адатта каналдар (channels) жана контексттер (context) аркылуу ишке ашырылат.
- Каналдар goroutine'лер ортосунда сигналдар өткөрүүгө мүмкүндүк берет. Мисалы, аяктоо зарылдыгын билдирүү үчүн канал түзсө болот:
stop := make(chan struct{})
func() {
for {
select {
case <-stop:
return // Goroutine'ни аяктоо
default:
// Жумушту аткаруу
}
}
}()
// Goroutine'ни токтотуу үчүн:
close(stop)
- Контекст пакети goroutine'лердин жашоо мөөнөтүн башкаруунун ыңгайлуу жолун камсыздайт, өзгөчө суроолор же узак мөөнөттүү операциялар менен иштегенде:
ctx, cancel := context.WithCancel(context.Background())
func(ctx context.Context) {
for {
select {
case <-ctx.Done():
return // Goroutine'ни аяктоо
default:
// Жумуш
}
}
}(ctx)
// Токтотуу үчүн:
cancel()
Мындайча айтканда, goroutine'лер каналдар же контексттер аркылуу сигналдарды угуп, сигнал келгенде туура аяктайт.