Sobes.tech
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, αρκούν δύο νήματα και δύο πόροι.