Sobes.tech
Junior — Middle

Чӣ гуна назорати иҷро ва ҳамоҳангсозии goroutine-ҳо дар барнома амалӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар Go назорати иҷрои ва синхронгии goroutine-ҳо одатан бо истифода аз:

  • WaitGroup аз пакети sync — имкон медиҳад интизор шавед, ки гурӯҳи goroutine-ҳо ба охир расад.
  • Каналҳо (channels) — барои интиқол додани маълумот ва сигнол байни goroutine-ҳо истифода мешаванд, ки синхронгиро таъмин мекунанд.

Масалан бо WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // кори goroutine
}()
wg.Wait() // интизор шавед, ки goroutine ба охир расад

Каналҳо имкон медиҳанд, масалан, натиҷаҳо ё сигнолҳои анҷомро интиқол диҳанд:

ch := make(chan int)
go func() {
    ch <- 42 // интиқоли арзиш
}()
арзиш := <-ch // гирифтани арзиш, синхронгии goroutine-ҳо

Аз ин рӯ, WaitGroup ва каналҳо асосӣ асбобҳои назорат ва синхронгии goroutine-ҳо мебошанд.