Τι είναι μια συνθήκη αγώνα, δώστε ένα παράδειγμα;
Τι είναι μια συνθήκη αγώνα, δώστε ένα παράδειγμα;

Βίντεο: Τι είναι μια συνθήκη αγώνα, δώστε ένα παράδειγμα;

Βίντεο: Τι είναι μια συνθήκη αγώνα, δώστε ένα παράδειγμα;
Βίντεο: O Eλληνοτουρκικός πόλεμος του 1897 2024, Απρίλιος
Anonim

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

Εκτός από αυτό, τι προκαλεί την κατάσταση του αγώνα;

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

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

Λαμβάνοντας υπόψη αυτό, ποια είναι η συνθήκη αγώνα δεδομένων;

Κατάσταση του αγώνα : ΕΝΑ κατάσταση του αγώνα είναι μια κατάσταση κατά την οποία το αποτέλεσμα μιας λειτουργίας εξαρτάται από την παρεμβολή ορισμένων επιμέρους λειτουργιών. Κούρσα δεδομένων : ΕΝΑ αγώνας δεδομένων είναι μια κατάσταση κατά την οποία τουλάχιστον δύο νήματα έχουν πρόσβαση σε μια κοινόχρηστη μεταβλητή ταυτόχρονα. Τουλάχιστον στο νήμα προσπαθεί να τροποποιήσει τη μεταβλητή.

Ποια είναι η διαφορά μεταξύ αδιεξόδου και συνθήκης αγώνα;

ΕΝΑ αδιέξοδο είναι όταν δύο (ή περισσότερα) νήματα μπλοκάρουν το ένα το άλλο. Αυτά τα νήματα λέγεται ότι είναι αδιέξοδο . Συνθήκες αγώνα εμφανίζονται όταν αλληλεπιδρούν δύο νήματα σε ένα αρνητικός (λάθος) τρόπο ανάλογα με την ακριβή σειρά που τους διαφορετικός εκτελούνται οδηγίες.

Συνιστάται: