Назад к вопросам
Middle
102
questionbank
Какие существуют примитивы синхронизации в Go?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
sync.Mutex: Взаимный исключитель для ограничения доступа к ресурсу только одним горутиной за раз.sync.RWMutex: Взаимный исключитель с поддержкой чтения и записи. Позволяет нескольким горутинам читать ресурс одновременно, но только одной горутине писать.sync.WaitGroup: Ожидание завершения набора горутин. Используется для координации выполнения нескольких фоновых задач.sync.Once: Гарантирует выполнение некоторого действия только один раз, даже при вызове из нескольких горутин.sync.Cond: Условная переменная, позволяющая горутинам ждать определенного условия перед продолжением выполнения. Работает в связке с мьютексом.- Каналы (
chan): Тип данных для безопасного обмена данными между горутинами и синхронизации их работы.- Небуферизованные каналы: Синхронная отправка и получение. Отправитель блокируется до тех пор, пока получатель не примет значение, и наоборот.
- Буферизованные каналы: Асинхронная отправка, пока буфер не заполнен. Отправитель блокируется только при полном буфере. Получатель блокируется при пустом буфере.