Sobes.tech
Middle

Ce este un deadlock?

sobes.tech AI

Răspuns de la AI

Blocarea mutuală (deadlock) — este o situație într-o aplicație multi-thread în care două sau mai multe fire de execuție se blochează reciproc, așteptând eliberarea resurselor ocupate de alt fir. Ca rezultat, niciun fir nu poate continua.

Exemplu de situație clasică de deadlock:

  • Firul A obține resursa 1 și așteaptă resursa 2.
  • Firul B obține resursa 2 și așteaptă resursa 1.

Ambele fire rămân blocate pentru totdeauna.

Pentru prevenirea deadlock-urilor se aplică:

  • O ordine strictă de achiziție a resurselor.
  • Timeout-uri la așteptarea blocărilor.
  • Utilizarea algoritmilor non-blocanți.

Exemplu în Java:

synchronized(resource1) {
    synchronized(resource2) {
        // lucru cu resursele
    }
}

Dacă un alt fir încearcă să achiziționeze resursele în ordine inversă, poate apărea un deadlock.