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-ҳо мебошанд.