Junior — Middle
98
Көп ағынды бағдарламалауда қандай блоктау түрлері бар және олар қалай жұмыс істейді?
Сұралған компаниялар
AI-дан жауап
sobes.tech AI
В многопоточном программировании существуют разные типы блокировок, которые помогают синхронизировать доступ к общим ресурсам:
- Мьютекс (Mutex) — обеспечивает эксклюзивный доступ к ресурсу. Только один поток может захватить мьютекс в данный момент.
- Рекурсивный мьютекс — позволяет одному и тому же потоку захватывать блокировку несколько раз без взаимной блокировки.
- Читательско-писательская блокировка (Read-Write Lock) — позволяет нескольким потокам одновременно читать ресурс, но запись возможна только эксклюзивно.
- Семафор — ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
- Spinlock (активное ожидание) — поток в цикле проверяет доступность блокировки, не переходя в состояние ожидания.
Пример использования мьютекса на Swift:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Критическая секция
lock.unlock()
}
Выбор типа блокировки зависит от задачи и требований к производительности и безопасности.