Sobes.tech
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.