Skip to main content

Vad är läsare-författarproblemet?

Problemet med läsare-författare är ett programmeringsdilemma som skapas när flera läsare och författare behöver tillgång till samma resurs.Om de alla tilläts åtkomst på en gång kan problem som överskrivningar, ofullständig information och andra problem uppstå.Därför kan programmerare begränsa åtkomsten till kontroll vilka bearbetningstrådar som ser resursen och när, med tanke på systemets och användarnas behov.Det finns flera sätt att ta itu med läsarna-författarproblemet.En av de vanligaste lösningarna innebär användning av semaforer för att flagga status och kontrollåtkomst.

Ur ett perspektiv kunde valfritt antal läsare säkert få tillgång till en resurs eftersom de inte gör ändringar i innehållet.När en författare kommer in i ekvationen blir situationen mer komplicerad.Om en tråd skriver medan andra trådar läser kanske läsarna inte får korrekt information.De kunde bara få en del av förändringen, eller kan se den föråldrade informationen och tycker att den är korrekt.

Mer än en författare kan också skapa ett problem.Samtidiga ändringar av samma innehåll kan skriva över det och skapa andra fel.Under problem med läsare-författare måste programmerare besluta om läsare eller författare har prioritet och hur de ska hantera tillgång.Läsare eller författare kan tilldelas prioritet, eller systemet kan tilldela åtkomst först till kvarn.Denna tredje lösning kan förhindra långa väntningar, men kan komma med sina egna problem.

I en lösning där läsarna har prioritet antar systemet att alla läsare som ber om åtkomst bör tillåtas först när åtkomst blir tillgänglig.Detta innebär att alla författare som vill komma åt resursen kan behöva vänta.Omvänt kan systemet anta att eftersom författare måste göra ändringar som kan påverka läsarna, bör de prioriteras under problem med läsare.När en läsare är klar med en resurs kan en författare hoppa in för att göra en förändring.Detta gäller inte bara användaråtgärder som att försöka spara ett dokument, utan för interna processer inuti datorn som håller systemet igång.

Ett annat alternativ gör det möjligt för läsarskrivarproblemet att balansera båda parternas behov, vilket gör att varje processtrådåtkomstNär den anländer.Detta förhindrar författare från att göra förändringar som åsidosätter varandra eller förvirrar läsarna, utan att lämna läsarna som väntar eller tvingar författare att hålla medan läsarna slutar.Sådana prioriteringar kan byggas in i ett program eller minnesåtkomstkontroll i en dator.Användare kanske kan göra ändringar om de är bekväma med programmering och systemet tillåter det.