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.