Sobes.tech
Junior — Middle

Poți explica ce tipuri de blocări există și cum funcționează în programarea multi-thread?

sobes.tech AI

Răspuns de la AI

În programarea multi-thread există diferite tipuri de blocări care ajută la sincronizarea accesului la resursele partajate:

  • Mutex (Excludere Mutua) — asigură acces exclusiv la o resursă. Doar un fir de execuție poate captura mutex-ul în același timp.
  • Mutex recursiv — permite aceluiași fir de execuție să captureze blocarea de mai multe ori fără a se bloca singur.
  • Blocare cititor-scritor (Read-Write Lock) — permite mai multor fire de execuție să citească resursa simultan, dar scrierea este posibilă doar în mod exclusiv.
  • Semafor — limitează numărul de fire de execuție care pot accesa resursa în același timp.
  • Spinlock (așteptare activă) — firul de execuție verifică în buclă dacă blocarea este disponibilă, fără a trece în stare de așteptare.

Exemplu de utilizare a unui mutex în Swift:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Secțiune critică
    lock.unlock()
}

Alegerea tipului de blocare depinde de sarcină și de cerințele de performanță și securitate.