Sobes.tech
Junior — Middle

Кадом ҳодисаҳо ва сигнолар барои ҳамкорӣ бо goroutines дар забони Go истифода бурда мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, барои муошират бо goroutine-ҳо, механизмҳои асосӣ истифода мешаванд:

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

  2. Сигналҳои системӣ — тавассути бастаи os/signal, метавон сигналҳои системиро дастгирӣ кард ва ба goroutine-ҳо барои анҷоми дуруст фиристод.

Бинобар ин, асосӣ "ҳодисаҳо" барои муошират, амалиёти фиристодан/гирифтани тавассути каналҳо, бекор кардан тавассути мавзӯъ ва сигналҳои системӣ мебошанд.