Junior — Middle
Ποιος είναι ο ελάχιστος αριθμός νημάτων που απαιτούνται για να προκύψει αδιέξοδο (Deadlock);
sobes.tech AI
Απάντηση από AI
Ο ελάχιστος αριθμός νημάτων που απαιτούνται για να προκληθεί αδιέξοδο (Deadlock) είναι δύο.
Ένα αδιέξοδο συμβαίνει όταν δύο ή περισσότερα νήματα κατέχουν ταυτόχρονα πόρους και το καθένα περιμένει να ελευθερωθεί ένας πόρος που κατέχει το άλλο. Για παράδειγμα:
- Το νήμα A κλειδώνει τον πόρο 1 και περιμένει τον πόρο 2.
- Το νήμα B κλειδώνει τον πόρο 2 και περιμένει τον πόρο 1.
Τα δύο νήματα παραμένουν αποκλεισμένα επ' αόριστον, καθώς το καθένα περιμένει να ελευθερωθεί ένας πόρος που κατέχει το άλλο.
Παράδειγμα σε ψευδοκώδικα:
// Νήμα 1
lock(resource1)
wait()
lock(resource2)
// Νήμα 2
lock(resource2)
wait()
lock(resource1)
Επομένως, για ένα deadlock, αρκούν δύο νήματα και δύο πόροι.