🔴 Сложный · 3 очк. Пакет sync
Можно ли разблокировать sync.Mutex из другой горутины (не из той, где был Lock)?
A Нет, будет panic
B Да, мьютекс не привязан к горутине
C Нет, deadlock
D Только для sync.RWMutex
Объяснение вопроса

Да, можно. sync.Mutex не привязан к горутине (в отличие от рекурсивных мьютексов в Java/C#). Любая горутина может вызвать Unlock(). Но так делать не рекомендуется - усложняет рассуждения о коде.

Нерекурсивность

Повторный Lock() в той же горутине без предварительного Unlock() приведёт к deadlock - мьютекс не рекурсивный.

var mu sync.Mutex
mu.Lock()
mu.Lock()  // deadlock: та же горутина ждёт сама себя
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.