Sobes.tech
Back to questions
Principal
8

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

Companies where asked
AlfaCapture

Answer from AI

sobes.tech AI

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

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

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

var mu sync.Mutex
var counter int

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

Эти инструменты помогают безопасно работать с конкурентными процессами и горутинами в Go.