Sobes.tech
Junior — Middle

Можеш ли да обясниш какви видове блокировки съществуват и как работят в многопоточната програмиране?

sobes.tech AI

Отговор от AI

В многопоточната програмиране съществуват различни типове блокировки, които помагат за синхронизиране на достъпа до споделени ресурси:

  • Мютекс (Mutex) — осигурява ексклузивен достъп до ресурс. Само един поток може да вземе мютекса в даден момент.
  • Рекурсивен мютекс — позволява на същия поток да вземе блокировката няколко пъти без взаимно блокиране.
  • Блокировка за четене и писане (Read-Write Lock) — позволява на няколко потока да четат ресурса едновременно, но записът е възможен само ексклузивно.
  • Семафор — ограничава броя на потокете, които могат да получат достъп до ресурса едновременно.
  • Spinlock (активно изчакване) — потокът проверява в цикъл дали блокировката е налична, без да преминава в състояние на изчакване.

Пример за използване на мютекс в Swift:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Критична секция
    lock.unlock()
}

Изборът на тип блокировка зависи от задачата и изискванията към производителността и сигурността.