Sobes.tech
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 и каналите са основните инструменти за контрол и синхронизация на горутините.