Junior — Middle
Чӣ гуна метавон ҳолат ва анҷоми goroutine-ро дар Go идора кард?
sobes.tech AI
Ҷавоб аз AI
Дар Го, идоракуи ҳолат ва анҷоми goroutine одатан бо истифода аз каналҳо (channels) ва контекстҳо (context) анҷом дода мешавад.
- Каналҳо имкон медиҳанд, ки сигнали байни goroutine-ҳо интиқол дода шавад. Масалан, шумо метавонед канал барои огоҳ кардани зарурати анҷом додан созед:
stop := make(chan struct{})
func() {
for {
select {
case <-stop:
return // Анҷоми goroutine
default:
// Корро иҷро мекунад
}
}
}()
// Барои боздошти goroutine:
close(stop)
- Пакети context роҳи қулай барои идоракунии муҳлати зиндагии goroutine-ҳо пешниҳод мекунад, махсусан дар кор бо дархостҳо ё амалҳои дарозмуддат:
ctx, cancel := context.WithCancel(context.Background())
func(ctx context.Context) {
for {
select {
case <-ctx.Done():
return // Анҷоми goroutine
default:
// Кор
}
}
}(ctx)
// Барои боздошти:
cancel()
Бинобар ин, goroutine-ҳо сигналиҳоро тавассути каналҳо ё контекстҳо мешунаванд ва дар вақти гирифтани сигнали дуруст ба кор идома медиҳанд.