Skip to main content

Qual è il problema dei lettori degli scrittori?

Il problema dei lettori degli scrittori è un dilemma di programmazione creato quando più lettori e scrittori hanno bisogno di accedere alla stessa risorsa.Se avessero tutti consentito l'accesso contemporaneamente, potrebbero sorgere problemi come sovrascrivi, informazioni incomplete e altri problemi.Pertanto, i programmatori possono limitare l'accesso al controllo quali thread di elaborazione vedono la risorsa e quando, considerando le esigenze del sistema e degli utenti.Esistono diversi modi per affrontare il problema dei lettori degli scrittori.Una delle soluzioni più comuni prevede l'uso di semafori per contrassegnare lo stato e il controllo dell'accesso.

Da una prospettiva, qualsiasi numero di lettori potrebbe accedere in modo sicuro a una risorsa perché non stanno apportando modifiche al contenuto.Una volta che uno scrittore entra nell'equazione, la situazione diventa più complicata.Se un thread sta scrivendo mentre altri thread stanno leggendo, i lettori potrebbero non ottenere informazioni corrette.Potrebbero ricevere solo una parte del cambiamento o vedere le informazioni obsolete e pensare che sia accurato.

Anche uno scrittore potrebbe creare un problema.Le modifiche simultanee allo stesso contenuto potrebbero sovrascriverlo e creare altri errori.Secondo il problema dei lettori, i programmatori devono decidere se i lettori o gli scrittori hanno la priorità e come gestire l'accesso.Ai lettori o agli scrittori potrebbe essere assegnata priorità o il sistema potrebbe assegnare l'accesso in base al primo arrivato, primo servizio.Questa terza soluzione può prevenire lunghe attese, ma potrebbe avere problemi propri.

In una soluzione in cui i lettori hanno priorità, il sistema presuppone che qualsiasi lettore che chieda l'accesso dovrebbe essere consentito in primo luogo, quando l'accesso diventa disponibile.Ciò significa che tutti gli scrittori che desiderano accedere alla risorsa potrebbero dover aspettare.Al contrario, il sistema potrebbe presumere che, poiché gli scrittori devono apportare modifiche che potrebbero influenzare i lettori, dovrebbero avere la priorità in base al problema dei lettori degli scrittori.Quando un lettore ha finito con una risorsa, uno scrittore potrebbe saltare per fare una modifica.Ciò vale non solo per le azioni dell'utente come il tentativo di salvare un documento, ma per i processi interni all'interno del computer che mantengono il sistema in esecuzione.

Un'altra opzione consente al problema dei lettori degli autori di bilanciare le esigenze di entrambe le parti, consentendo l'accesso a ciascun thread di elaborazionecome arriva.Ciò impedisce agli scrittori di apportare modifiche che si preparano a vicenda o confondono i lettori, senza lasciare i lettori in attesa o costringere gli scrittori a trattenere mentre i lettori finiscono.Tali priorità possono essere integrate in un programma software o controllo dell'accesso alla memoria in un computer.Gli utenti potrebbero essere in grado di apportare modifiche se sono a proprio agio con la programmazione e il sistema lo consente.