Sobes.tech
Junior

Какви други начини за синхронизиране на горутините съществуват в Go освен каналите?

sobes.tech AI

Отговор от AI

Освен каналите, в Go за синхронизиране на горутините могат да се използват:

  • sync.WaitGroup — позволява да се изчака завършването на група горутини.
  • sync.Mutex — мютекс за защита на споделени ресурси от едновременен достъп.
  • sync.RWMutex — мютекс с разделяне на четене и писане.
  • sync.Cond — условна променлива за уведомяване на горутините за настъпване на събитие.
  • атомарни операции от пакета sync/atomic — за атомарни операции с променливи без блокировки.

Пример за използване на WaitGroup:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // работа на горутината
}()
wg.Wait() // чака завършването на всички горутини