Junior — Middle
Kas saak selgitada, mis on vastastikuse välistamise mehhanism (Mutex) ja kuidas see töötab, et vältida samaaegset juurdepääsu ressurssidele?
sobes.tech AI
Vastus AI-lt
Механизм взаимного исключения (Mutex) — это способ синхронизации, который гарантирует, что в каждый момент времени только один поток или процесс может получить доступ к общему ресурсу.
Как работает:
- Mutex предоставляет блокировку, которую поток должен захватить перед использованием ресурса.
- Если другой поток уже захватил mutex, последующие потоки будут ждать освобождения.
- После завершения работы с ресурсом поток освобождает mutex, позволяя другим получить доступ.
Это предотвращает состояния гонки и обеспечивает целостность данных при параллельном доступе.
Пример на Swift (iOS):
let mutex = DispatchSemaphore(value: 1)
func accessResource() {
mutex.wait() // захват mutex
// работа с общим ресурсом
mutex.signal() // освобождение mutex
}
Здесь DispatchSemaphore с начальным значением 1 действует как mutex.