Back to questions
Avito
Junior — Middle
81
Можешь объяснить, какие типы блокировок существуют и как они работают в многопоточном программировании?
Companies where asked
Answer from AI
sobes.tech AI
В многопоточном программировании существуют разные типы блокировок, которые помогают синхронизировать доступ к общим ресурсам:
- Мьютекс (Mutex) — обеспечивает эксклюзивный доступ к ресурсу. Только один поток может захватить мьютекс в данный момент.
- Рекурсивный мьютекс — позволяет одному и тому же потоку захватывать блокировку несколько раз без взаимной блокировки.
- Читательско-писательская блокировка (Read-Write Lock) — позволяет нескольким потокам одновременно читать ресурс, но запись возможна только эксклюзивно.
- Семафор — ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
- Spinlock (активное ожидание) — поток в цикле проверяет доступность блокировки, не переходя в состояние ожидания.
Пример использования мьютекса на Swift:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Критическая секция
lock.unlock()
}
Выбор типа блокировки зависит от задачи и требований к производительности и безопасности.