Junior — Middle
Можеш ли да обясниш какви видове блокировки съществуват и как работят в многопоточната програмиране?
sobes.tech AI
Отговор от AI
В многопоточната програмиране съществуват различни типове блокировки, които помагат за синхронизиране на достъпа до споделени ресурси:
- Мютекс (Mutex) — осигурява ексклузивен достъп до ресурс. Само един поток може да вземе мютекса в даден момент.
- Рекурсивен мютекс — позволява на същия поток да вземе блокировката няколко пъти без взаимно блокиране.
- Блокировка за четене и писане (Read-Write Lock) — позволява на няколко потока да четат ресурса едновременно, но записът е възможен само ексклузивно.
- Семафор — ограничава броя на потокете, които могат да получат достъп до ресурса едновременно.
- Spinlock (активно изчакване) — потокът проверява в цикъл дали блокировката е налична, без да преминава в състояние на изчакване.
Пример за използване на мютекс в Swift:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Критична секция
lock.unlock()
}
Изборът на тип блокировка зависи от задачата и изискванията към производителността и сигурността.