Junior — Middle
Как се осъществява контролът върху изпълнението и синхронизацията на горутините в програмата?
sobes.tech AI
Отговор от AI
В Go, контролът върху изпълнението и синхронизацията на горутините обикновено се осъществява с:
- WaitGroup от пакета
sync— позволява да се чака завършването на група горутини. - Канали (channels) — използват се за пренос на данни и сигнали между горутините, осигурявайки синхронизация.
Пример с WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// работа на горутината
}()
wg.Wait() // чака завършването на горутината
Каналите позволяват, например, пренос на резултати или сигнали за завършване:
ch := make(chan int)
go func() {
ch <- 42 // изпращане на стойност
}()
стойност := <-ch // получаване на стойността, синхронизира горутините
Така, WaitGroup и каналите са основните инструменти за контрол и синхронизация на горутините.