Skip to main content

Wat is het probleem van de lezers-schrijvers?

Het probleem van de lezers-schrijvers is een programmeerdilemma dat is gemaakt wanneer meerdere lezers en schrijvers toegang nodig hebben tot dezelfde bron.Als ze allemaal tegelijk toegang zouden krijgen tot toegang, kunnen problemen zoals overschrijvingen, onvolledige informatie en andere problemen optreden.Daarom kunnen programmeurs de toegang tot controle beperken welke verwerkingsthreads de bron zien en wanneer, rekening houdend met de behoeften van het systeem en de gebruikers.Er zijn verschillende manieren om het probleem van de lezers-schrijvers aan te pakken.Een van de meest voorkomende oplossingen omvat het gebruik van semaforen om de status- en controletoegang te markeren.

Vanuit één perspectief kan een aantal lezers veilig toegang krijgen tot een bron omdat ze geen wijzigingen aanbrengen in de inhoud.Zodra een schrijver de vergelijking invoert, wordt de situatie ingewikkelder.Als een thread schrijft terwijl andere threads lezen, krijgen de lezers mogelijk geen correcte informatie.Ze zouden slechts een deel van de wijziging kunnen ontvangen, of kunnen de verouderde informatie zien en denken dat het nauwkeurig is.

Meer dan één schrijver kan ook een probleem veroorzaken.Gelijktijdige wijzigingen in dezelfde inhoud kunnen het overschrijven en andere fouten maken.Volgens het probleem van de lezers moeten programmeurs beslissen of lezers of schrijvers prioriteit hebben en hoe ze toegang moeten hebben.Lezers of schrijvers kunnen prioriteit worden toegewezen, of het systeem kan toegang toewijzen op basis van wie het eerst komt, het eerst maalt.Deze derde oplossing kan lange wachttijd voorkomen, maar kan met zijn eigen problemen komen.

In een oplossing waar lezers voorrang hebben, gaat het systeem ervan uit dat elke lezer die om toegang vraagt, eerst moet worden toegestaan, wanneer de toegang beschikbaar komt.Dit betekent dat schrijvers die toegang willen tot de bron moeten moeten wachten.Omgekeerd zou het systeem kunnen aannemen dat omdat schrijvers wijzigingen moeten aanbrengen die de lezers kunnen beïnvloeden, ze prioriteit moeten krijgen onder het probleem van de lezers-schrijvers.Wanneer een lezer klaar is met een bron, kan een schrijver binnenkomen om een verandering aan te brengen.Dit is niet alleen van toepassing op gebruikersacties zoals proberen een document op te slaan, maar op interne processen in de computer die het systeem laten draaien.

Een andere optie stelt het probleem van de lezers in staat om de behoeften van beide partijen in evenwicht te brengen, waardoor elke verwerkingsdraad toegang isals het aankomt.Dit voorkomt dat schrijvers wijzigingen aanbrengen die elkaar opheffen of lezers verwarren, zonder lezers te laten wachten of schrijvers te dwingen vast te houden terwijl lezers eindigen.Dergelijke prioriteiten kunnen worden ingebouwd in een softwareprogramma of geheugentoegang in een computer.Gebruikers kunnen mogelijk wijzigingen aanbrengen als ze zich comfortabel voelen bij het programmeren en het systeem staat dit toe.