> Какие примитивы синхронизации есть в стандартной библиотеке Go (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Lamoda
Стек: Go
> Пример ответа
В стандартной библиотеке Go (sync) есть несколько ключевых примитивов синхронизации:
-
sync.Mutex- взаимное исключение (мьютекс). Используется для защиты критических секций от одновременного доступа нескольких горутин. Пример:mu.Lock()/mu.Unlock(). -
sync.RWMutex- мьютекс с разделением на чтение и запись. Позволяет множеству горутин одновременно читать (RLock/RUnlock), но блокирует запись (Lock/Unlock) до освобождения всех читателей. -
sync.WaitGroup- ожидание завершения группы горутин. Методы:Add(n),Done(),Wait(). Идеально для параллельного выполнения задач. -
sync.Once- гарантирует однократное выполнение функции (например, инициализация синглтона). Метод:Do(f). -
sync.Cond- условная переменная. Позволяет горутинам ждать наступления события и пробуждаться по сигналу (Wait,Signal,Broadcast). Требует мьютекса. -
sync.Map- потокобезопасная карта (map) с оптимизациями для конкурентного доступа. Методы:Load,Store,Delete,LoadOrStoreи др. -
sync.Pool- пул временных объектов, снижающий нагрузку на сборщик мусора. Методы:Get,Put. -
sync/atomic- пакет для атомарных операций над примитивными типами (AddInt64,CompareAndSwap,Load,Store). Используется для lock-free синхронизации.
Также в Go есть каналы (chan), которые являются встроенным примитивом синхронизации и обмена данными между горутинами.
> Похожие задачи по Go
Как реализуется раздача заданий и синхронизация горутин в воркерпуле в Go
Для чего нужен type switch в Go
Как называются типы объектов, которые при модификации возвращают копию, а не изменяют исходный объект
Для чего нужен select без default кейса в Go
> Похожие задачи по backend
Как реализуется раздача заданий и синхронизация горутин в воркерпуле в Go
Для чего нужен type switch в Go
Как называются типы объектов, которые при модификации возвращают копию, а не изменяют исходный объект
Для чего нужен select без default кейса в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью