Sobes.tech
Junior — Middle

Μπορείτε να δώσετε ένα παράδειγμα κατάστασης όπου συμβαίνει αμοιβαία αποκλεισμός πόρων στο σύστημα;

sobes.tech AI

Απάντηση από AI

Το αδιέξοδο (deadlock) συμβαίνει όταν δύο ή περισσότεροι διαδικασίες (ή νήματα) περιμένουν η μία την άλλη, διατηρώντας πόρους που χρειάζονται οι άλλοι για να συνεχίσουν.

Παράδειγμα κατάστασης:

  • Το νήμα A αποκτά τον πόρο 1 και προσπαθεί να αποκτήσει τον πόρο 2.
  • Το νήμα B αποκτά τον πόρο 2 και προσπαθεί να αποκτήσει τον πόρο 1.

Τα δύο νήματα περιμένουν να ελευθερωθούν οι πόροι από το άλλο, και κανένα δεν μπορεί να συνεχίσει.

Στο iOS, αυτό μπορεί να συμβεί, για παράδειγμα, κατά τη χρήση πολλαπλών κλειδώσεων (locks) ή ουρών, όταν η σειρά απόκτησης πόρων δεν ελέγχεται. Για την αποφυγή deadlock, είναι σημαντικό να ακολουθείται μια σειρά στην απόκτηση πόρων ή να χρησιμοποιούνται χρονικά όρια και άλλα μηχανισμοί συγχρονισμού.