Sobes.tech
Middle

Mi az a deadlock?

sobes.tech MI

Válasz az MI-től

Deadlock (kölcsönös zárolás) — olyan helyzet egy több szálas alkalmazásban, amikor két vagy több szál örökre blokkolja egymást, várva, hogy felszabaduljanak az erőforrások, amelyeket másik szál foglal el. Ennek eredményeként egyik szál sem tud tovább haladni.

Klasszikus deadlock példája:

  • Az A szál megszerzi az 1-es erőforrást és vár a 2-es erőforrásra.
  • A B szál megszerzi a 2-es erőforrást és vár az 1-es erőforrásra.

Mindkét szál örökre blokkolva marad.

A deadlockok megelőzése érdekében alkalmazzák:

  • Szigorú sorrend az erőforrások megszerzésében.
  • Időkorlátok (timeout) a zárolások várakozásakor.
  • Nem blokkoló algoritmusok használata.

Java példában:

synchronized(resource1) {
    synchronized(resource2) {
        // erőforrásokkal való munka
    }
}

Ha egy másik szál fordított sorrendben próbálja megszerezni az erőforrásokat, deadlock léphet fel.