Sobes.tech
Middle

Какво е deadlock?

sobes.tech AI

Отговор от AI

Deadlock (взаимна блокировка) — ситуация в многонишкова апликация, когато два или повече нишки завинаги блокират една друга, очаквайки освобождаването на ресурси, заети от другата нишка. В резултат нито една нишка не може да продължи работа.

Пример за класическа ситуация на deadlock:

  • Нишка A взема ресурс 1 и чака ресурс 2.
  • Нишка B взема ресурс 2 и чака ресурс 1.

И двете нишки остават блокирани завинаги.

За предотвратяване на deadlock-ове се прилагат:

  • Строг ред на вземане на ресурси.
  • Таймаути при очакване на блокировки.
  • Използване на не блокиращи алгоритми.

Пример на Java:

synchronized(resource1) {
    synchronized(resource2) {
        // работа с ресурсите
    }
}

Ако друга нишка се опита да вземе ресурсите в обратен ред, може да възникне deadlock.