Sobes.tech
Junior — Middle

Как се осъществява координацията на работата на няколко горутини в Go?

sobes.tech AI

Отговор от AI

В Go координирането на работата на няколко горутини обикновено се осъществява с помощта на канали (channels) и пакета sync.

  • Канали позволяват на горутините да обменят данни и да синхронизират изпълнението си, блокирайки изпращача или получателя до готовност.
  • sync.WaitGroup се използва за изчакване завършването на група горутини.
  • Mutex и други примитиви от sync осигуряват безопасен достъп до споделените ресурси.

Пример за използване на канал за синхронизация:

ch := make(chan int)
func() {
    // Изпълнение на работа
    ch <- 1 // сигнал за завършване
}()

<-ch // изчакване на сигнала

По този начин каналите и примитивите за синхронизация позволяват ефективно координиране на паралелни задачи.