Hva er leserne-forfatterne problemet?
"Leser-forfattere-problemet" er et programmeringsdilemma som opprettes når flere lesere og forfattere trenger tilgang til den samme ressursen. Hvis de alle fikk tilgang på en gang, kan problemer som overskriving, ufullstendig informasjon og andre problemer oppstå. Derfor kan programmerere begrense tilgangen til å kontrollere hvilke prosesseringstråder som ser ressursen og når, med tanke på behovene til systemet og brukerne. Det er flere måter å adressere leser-forfattere problemet. En av de vanligste løsningene innebærer bruk av semaforer for å flagge status og kontrollere tilgangen.
Fra ett perspektiv kan et hvilket som helst antall lesere trygt få tilgang til en ressurs fordi de ikke gjør endringer i innholdet. Når en forfatter går inn i ligningen, blir situasjonen mer komplisert. Hvis en tråd skriver mens andre tråder leser, kan det hende at leserne ikke får riktig informasjon. De kan bare motta en del av endringen, eller kanskje se den utdaterte informasjonen og synes den er nøyaktig.
Mer enn en forfatter kan også skape et problem. Samtidige endringer av samme innhold kan overskrive det og skape andre feil. Under leser-forfattere problemet, må programmerere bestemme om lesere eller forfattere har prioritet, og hvordan de skal håndtere tilgang. Lesere eller forfattere kan prioriteres, eller systemet kan tildele tilgang fra først til mølla-basis. Denne tredje løsningen kan forhindre lang ventetid, men kan komme med egne problemer.
I en løsning der leserne har prioritet, antar systemet at enhver leser som ber om tilgang, skal få lov til å komme inn først når tilgang blir tilgjengelig. Dette betyr at alle forfattere som vil ha tilgang til ressursen, kan trenge å vente. Motsatt kan systemet anta at fordi forfattere trenger å gjøre endringer som kan påvirke leserne, bør de prioriteres under leser-forfatterproblemet. Når en leser er ferdig med en ressurs, kan en forfatter hoppe inn for å gjøre en endring. Dette gjelder ikke bare brukerhandlinger som å prøve å lagre et dokument, men interne prosesser inne i datamaskinen som holder systemet i gang.
Et annet alternativ gjør det mulig for leserne-forfatterne å balansere behovene til begge parter, slik at hver behandlingstråd tilgang når den ankommer. Dette forhindrer forfattere i å gjøre endringer som overstyrer hverandre eller forvirrer lesere, uten å la leserne vente, eller tvinge forfattere til å holde mens leserne er ferdige. Slike prioriteringer kan bygges inn i et program eller minnetilgangskontroll på en datamaskin. Brukere kan være i stand til å gjøre endringer hvis de er komfortable med programmering og systemet tillater det.