Sobes.tech
Назад к вопросам
Middle+
1

Какие примитивы синхронизации использовал в Go?

Компании, где спрашивали
Защита Инфо Транс z-it

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

sobes.tech AI

В Go для синхронизации горутин используются следующие примитивы:

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

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

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Эти примитивы позволяют эффективно управлять конкурентным доступом и синхронизацией в многопоточных программах на Go.