Junior — Middle
Кадом ҳодисаҳо ва сигнолар барои ҳамкорӣ бо goroutines дар забони Go истифода бурда мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, барои муошират бо goroutine-ҳо, механизмҳои асосӣ истифода мешаванд:
- Каналӣ (channels) — роҳи асосии интиқол додани маълумот ва сигнали байни goroutine-ҳо. Бо каналӣ, метавон арзишҳоро фиристода ва қабул кард, ки ин ҳамоҳангсозиро имконпазир месозад.
ch := make(chan int)
go func() {
ch <- 42 // фиристодани арзиш
}()
val := <-ch // қабул кардани арзиш
- Мавзӯъ (context.Context) — барои идора кардани муҳлати зиндагии goroutine-ҳо, бекор кардани амалиётҳо ва интиқоли сигнали бекоркунӣ истифода мешавад.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// коркарди бекоркунӣ
}
}(ctx)
cancel() // сигнали бекоркунӣ
-
sync.WaitGroup — барои интизор шудан ба анҷоми гурӯҳи goroutine-ҳо.
-
Сигналҳои системӣ — тавассути бастаи
os/signal, метавон сигналҳои системиро дастгирӣ кард ва ба goroutine-ҳо барои анҷоми дуруст фиристод.
Бинобар ин, асосӣ "ҳодисаҳо" барои муошират, амалиёти фиристодан/гирифтани тавассути каналҳо, бекор кардан тавассути мавзӯъ ва сигналҳои системӣ мебошанд.