Представим ситуацию: несколько активных чтений, приходит запрос на запись (RWMutex). В каком порядке будут выполняться операции?

Текущие читатели завершаются, ожидающий writer получает возможность взять Lock. Новые RLock блокируются, пока ожидающий писатель не выполнит запись и не освободит блокировку.

Короткий ответ

Что ответить на собеседовании

Текущие читатели завершаются, ожидающий writer получает возможность взять Lock. Новые RLock блокируются, пока ожидающий писатель не выполнит запись и не освободит блокировку.

Подробный разбор

Ответ с пояснениями

Текущие читатели завершаются, ожидающий writer получает возможность взять Lock. Новые RLock блокируются, пока ожидающий писатель не выполнит запись и не освободит блокировку.

Это предотвращает бесконечное оттеснение writer постоянно прибывающими читателями. Но RWMutex не обещает полный FIFO-порядок между всеми конкурентными вызовами. Нельзя держать RLock и пытаться повысить его до Lock; рекурсивное чтение также опасно, если уже ждёт писатель.

Источник: go.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее