Skip to main content

Ποιο είναι το πρόβλημα των αναγνωστών των αναγνωστών;

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

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

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

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