Hvad er læsere-forfattere problemet?
Problemet med "læsere-forfattere" er et programmeringsdilemma oprettet, når flere læsere og forfattere har brug for adgang til den samme ressource. Hvis de alle fik adgang på en gang, kan der opstå problemer som overskrivning, ufuldstændige oplysninger og andre problemer. Derfor kan programmerere begrænse adgangen til at kontrollere, hvilke behandlingsgange der ser ressourcen, og hvornår systemets og brugernes behov tages i betragtning. Der er flere måder at tackle problemet med læsere-forfattere. En af de mest almindelige løsninger involverer brug af semaforer til at markere status og kontrollere adgangen.
Fra et perspektiv kunne ethvert antal læsere sikkert få adgang til en ressource, fordi de ikke foretager ændringer i indholdet. Når en forfatter kommer ind i ligningen, bliver situationen mere kompliceret. Hvis en tråd skriver, mens andre tråde læser, får læserne muligvis ikke korrekt information. De kunne kun modtage en del af ændringen eller se muligvis de forældede oplysninger og synes, de er nøjagtige.
Mere end en forfatter kunne også skabe et problem. Samtidige ændringer til det samme indhold overskriver muligvis det og skaber andre fejl. Under læsere-forfatterproblemet skal programmerere beslutte, om læsere eller forfattere har prioritet, og hvordan de skal håndtere adgang. Læsere eller forfattere kunne prioriteres, eller systemet kan tildele adgang fra først til mølle-basis. Denne tredje løsning kan forhindre lange ventetider, men kan komme med egne problemer.
I en løsning, hvor læsere har prioritet, antager systemet, at enhver læser, der beder om adgang, skal være tilladt først, når adgang bliver tilgængelig. Dette betyder, at alle forfattere, der ønsker at få adgang til ressourcen, muligvis skal vente. Omvendt kan systemet antage, at fordi forfattere er nødt til at foretage ændringer, der kan påvirke læserne, bør de prioriteres under læseren-forfatterproblemet. Når en læser er færdig med en ressource, kunne en forfatter hoppe ind for at foretage en ændring. Dette gælder ikke kun for brugerhandlinger som at prøve at gemme et dokument, men også for interne processer inde i computeren, der holder systemet kørende.
En anden mulighed gør det muligt for læsere-forfattere-problemet at afbalancere begge parters behov og tillader hver behandlingstrådeadgang, når den ankommer. Dette forhindrer forfattere i at foretage ændringer, der tilsidesætter hinanden eller forvirrer læserne, uden at lade læserne vente eller tvinge forfattere til at holde, mens læserne er færdige. Sådanne prioriteter kan indbygges i et softwareprogram eller hukommelsesadgangskontrol på en computer. Brugere kan muligvis foretage ændringer, hvis de er komfortable med programmeringen, og systemet tillader det.