Middle
Какво е deadlock?
sobes.tech AI
Отговор от AI
Deadlock (взаимна блокировка) — ситуация в многонишкова апликация, когато два или повече нишки завинаги блокират една друга, очаквайки освобождаването на ресурси, заети от другата нишка. В резултат нито една нишка не може да продължи работа.
Пример за класическа ситуация на deadlock:
- Нишка A взема ресурс 1 и чака ресурс 2.
- Нишка B взема ресурс 2 и чака ресурс 1.
И двете нишки остават блокирани завинаги.
За предотвратяване на deadlock-ове се прилагат:
- Строг ред на вземане на ресурси.
- Таймаути при очакване на блокировки.
- Използване на не блокиращи алгоритми.
Пример на Java:
synchronized(resource1) {
synchronized(resource2) {
// работа с ресурсите
}
}
Ако друга нишка се опита да вземе ресурсите в обратен ред, може да възникне deadlock.