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