Junior — Middle
Milliseid meetodeid saab kasutada vastastikuste lukustuste vältimiseks mitmetraadilistes rakendustes?
sobes.tech AI
Vastus AI-lt
Resursi, kas kaitsevad üksteist (deadlock) mitme niidiga rakendustes, saab kasutada mitmeid meetodeid:
- Vältida sisemisi lukke: püüa mitte saada korraga mitu lukku.
- Resursside hankimise järjekorra määramine: alati hankige lukud samas järjekorras.
- Timeoutide kasutamine: proovides lukku saada, kasutage timeouti, et mitte oodata lõpmatult.
- Kõrgema taseme sünkroniseerimise primitiivide kasutamine: näiteks iOS-is
DispatchQueue, mis lihtsustavad niitide haldamist.
Resursside hankimise näide:
// Alati esmalt hankige lockA, siis lockB
lockA.lock()
lockB.lock()
// töötage ressurssidega
lockB.unlock()
lockA.unlock()