Vad är problemet med läsare-författare?
Problemet med läsarförfattare är ett programmeringsdilemma som skapas när flera läsare och författare behöver tillgång till samma resurs. Om de alla fick åtkomst på en gång kan problem som överskrivningar, ofullständig information och andra problem uppstå. Därför kan programmerare begränsa åtkomsten för att kontrollera vilka bearbetningstrådar som ser resursen och när, med tanke på systemets och användarnas behov. Det finns flera sätt att hantera läsaren-författarproblemet. En av de vanligaste lösningarna är att använda semaforer för att flagga status och kontrollera åtkomst.
Ur ett perspektiv kan valfritt antal läsare säkert komma åt en resurs eftersom de inte gör ändringar i innehållet. När en författare går 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 kan bara få del av förändringen, eller kanske 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. Enligt problem med läsare-författare måste programmerare bestämma om läsare eller författare har prioritet och hur de ska hantera åtkomst. Läsare eller författare kan tilldelas prioritet, eller så kan systemet tilldela åtkomst efter en 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 begär å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 läsaren-författarproblemet. 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 för 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äsare-författare att balansera båda parters behov, vilket gör att varje bearbetningstrådåtkomst när den kommer. Detta förhindrar författare från att göra ändringar som åsidosätter varandra eller förvirrar läsarna utan att lämna läsarna att vänta eller tvinga författare att hålla medan läsarna är klara. 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.