Назад к вопросам
Разумные решения
Avito
ivi
Junior — Middle
71
Можете объяснить, что такое механизм взаимного исключения (Mutex) и как он работает для предотвращения одновременного доступа к ресурсам?
Компании, где спрашивали
Itexus
Ответ от нейросети
sobes.tech AI
Механизм взаимного исключения (Mutex) — это способ синхронизации, который гарантирует, что в каждый момент времени только один поток или процесс может получить доступ к общему ресурсу.
Как работает:
- Mutex предоставляет блокировку, которую поток должен захватить перед использованием ресурса.
- Если другой поток уже захватил mutex, последующие потоки будут ждать освобождения.
- После завершения работы с ресурсом поток освобождает mutex, позволяя другим получить доступ.
Это предотвращает состояния гонки и обеспечивает целостность данных при параллельном доступе.
Пример на Swift (iOS):
let mutex = DispatchSemaphore(value: 1)
func accessResource() {
mutex.wait() // захват mutex
// работа с общим ресурсом
mutex.signal() // освобождение mutex
}
Здесь DispatchSemaphore с начальным значением 1 действует как mutex.