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