Sobes.tech
Назад к вопросам
Junior
3

Какие ещё способы синхронизации горутин существуют в Go помимо каналов?

Компании, где спрашивали
Позитив Технолоджис

Ответ от нейросети

sobes.tech AI

Помимо каналов, в Go для синхронизации горутин можно использовать:

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

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

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // работа горутины
}()
wg.Wait() // ждем завершения всех горутин