Skip to main content

Τι είναι μια κατάσταση αγώνα;

Οι συνθήκες φυλής έχουν να κάνουν με τις προσπάθειες ενός συστήματος ή μεμονωμένης συσκευής για να συμμετάσχουν σε πολλαπλές εργασίες.Γενικά, υπάρχει μια κατάσταση αγώνα όταν το σύστημα προσπαθεί να επεξεργαστεί δύο ή περισσότερες διαφορετικές λειτουργίες ταυτόχρονα, αλλά δεν είναι σε θέση να το πράξει.Ο λόγος για την αποτυχία είναι ότι οι λειτουργίες δεν παρατάσσονται στη σωστή ακολουθία, μια περίσταση μπορεί να οδηγήσει στο κλείσιμο του συστήματος.

Ενώ πολλές διαφορετικές συσκευές έχουν διαμορφωθεί ώστε να επιτρέπουν το multitasking, εξακολουθεί να υπάρχει μια εσωτερική διαδικασία που δημιουργεί μια ιεραρχία των λειτουργιών.Προκειμένου να πραγματοποιηθούν ορισμένες λειτουργίες, πρέπει να συμβούν εκ των προτέρων άλλες λειτουργίες.Ενώ ο τελικός χρήστης αντιλαμβάνεται ότι όλες οι λειτουργίες μπορεί να φαίνονται να λαμβάνουν χώρα ταυτόχρονα, αυτό δεν συμβαίνει απαραιτήτως.

Μια κατάσταση αγώνα δημιουργείται όταν δύο ή περισσότερες λειτουργίες αγωνίζονται μεταξύ τους για να ολοκληρώσουν την ολοκλήρωση πριν από τις άλλες λειτουργίες.Όταν όλες οι μεμονωμένες λειτουργίες είναι σωστά διατεταγμένες, αυτό οδηγεί στην επιτυχή εκτέλεση όλων των λειτουργιών εγκαίρως.Ωστόσο, εάν η ακολουθία των εργασιών απορρίπτεται εκτός ισορροπίας, αυτό δημιουργεί ένα σημάδι.Στο χειρότερο σενάριο, η κατάσταση του αγώνα θα καταστήσει αδύνατο το σύστημα να συνεχιστεί στην προσπάθειά του να επεξεργαστεί όλες τις λειτουργίες της σειράς που εμπλέκεται σήμερα.Επειδή το σύστημα ενδέχεται να χρειαστεί να επεξεργαστεί την πέμπτη λειτουργία στη συμβολοσειρά πριν από την πρώτη και τη δεύτερη λειτουργία, πρέπει να ολοκληρωθεί ολόκληρη η συμβολοσειρά, πρέπει να ανατραπεί και να αποκατασταθεί με τη σωστή σειρά.

Ένα κοινό παράδειγμα μιας κατάστασης αγώνα έχει να κάνει με την επεξεργασία δεδομένων.Εάν ένα σύστημα λαμβάνει εντολές για να διαβάσει τα υπάρχοντα δεδομένα κατά τη σύνταξη νέων δεδομένων, αυτό μπορεί να οδηγήσει σε μια σύγκρουση που αναγκάζει το σύστημα να κλείσει με κάποιο τρόπο.Το σύστημα μπορεί να εμφανίσει κάποιο μήνυμα σφάλματος εάν η ποσότητα των δεδομένων που επεξεργάζεται τοποθετεί μια υπερβολική πίεση σε διαθέσιμους πόρους ή το σύστημα μπορεί απλά να κλείσει.Όταν συμβεί αυτό, είναι συνήθως καλή ιδέα να επανεκκινήσετε το σύστημα και να ξεκινήσετε ξανά την ακολουθία.Εάν το ποσό των επεξεργασμένων δεδομένων είναι σημαντική, μπορεί να είναι καλύτερο να επιτρέπεται η αφομοίωση των νέων δεδομένων που θα ολοκληρωθούν πριν επιχειρήσετε να διαβάσετε οποιοδήποτε από τα σήμερα αποθηκευμένα δεδομένα.

Πολλά συστήματα αποφεύγουν τη δυνατότητα για μια κατάσταση αγώνα, καθορίζοντας προτεραιότητες στα επιχειρησιακά πρωτόκολλα.Οι προτεραιότητες καθορίζονται για να λειτουργούν καλά μέσα στις δυνατότητες του συστήματος και έτσι να περιορίσουν την ικανότητα μιας κατάστασης αγώνα να αναπτυχθεί.