Junior — Middle
Tudod magyarázni, hogy milyen típusú zárolások léteznek, és hogyan működnek a több szálas programozásban?
sobes.tech MI
Válasz az MI-től
Több szálas programozásban különböző típusú zárolások léteznek, amelyek segítenek szinkronizálni a közös erőforrásokhoz való hozzáférést:
- Mutex (Kölcsönös kizárás) — kizárólagos hozzáférést biztosít egy erőforráshoz. Csak egy szál szerezheti meg a mutexet egyszerre.
- Rekurzív mutex — lehetővé teszi ugyanazon szálnak, hogy többször is megszerezze a zárolást anélkül, hogy blokkolná magát.
- Olvasási-Írási zárolás (Read-Write Lock) — több szál olvashatja az erőforrást egy időben, de írás csak kizárólagosan lehetséges.
- Szemafor — korlátozza, hogy hány szál férhet hozzá az erőforráshoz egyszerre.
- Spinlock (aktív várakozás) — a szál ciklikusan ellenőrzi, hogy elérhető-e a zárolás, anélkül, hogy várakozó állapotba lépne.
Swift példakód mutex használatára:
let lock = NSLock()
func criticalSection() {
lock.lock()
// Kritikus szakasz
lock.unlock()
}
A zárolás típusának kiválasztása a feladattól és a teljesítmény- illetve biztonsági követelményektől függ.