Sobes.tech
Назад к вопросам
Senior
4

Что ты знаешь из пакета sync кроме Atomic и Mutex?

Компании, где спрашивали
sber tech

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

sobes.tech AI

В пакете sync в Go, помимо Mutex и atomic операций, есть несколько полезных инструментов для синхронизации:

  • WaitGroup — позволяет ждать завершения группы горутин. Используется для координации параллельных задач.

  • Once — гарантирует, что определённая функция выполнится ровно один раз, даже если вызывается из нескольких горутин.

  • Cond — условная переменная, позволяющая горутине ждать наступления определённого условия и уведомлять другие горутины об изменениях.

  • RWMutex — расширение Mutex, позволяющее нескольким читателям одновременно блокировать ресурс, но только одному писателю.

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

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