Skip to main content

Hva er leserforfatterproblemet?

Leser-forfatterproblemet er et programmeringsdilemma som er opprettet når flere lesere og forfattere trenger tilgang til samme ressurs.Hvis de alle fikk tilgang til en gang, kan det oppstå problemer som overskriver, ufullstendig informasjon og andre problemer.Derfor kan programmerere begrense tilgangen til å kontrollere hvilke behandlingstråder som ser ressursen og når, med tanke på behovene til systemet og brukerne.Det er flere måter å løse leserforfatterproblemet.En av de vanligste løsningene innebærer bruk av semaforer for å flagge status og kontrolltilgang.

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 kommer inn i ligningen, blir situasjonen mer komplisert.Hvis en tråd skriver mens andre tråder leser, kan leserne kanskje ikke få riktig informasjon.De kunne bare motta en del av endringen, eller kan se den utdaterte informasjonen og synes den er nøyaktig.

Mer enn en forfatter kan også skape et problem.Samtidige endringer i det samme innholdet kan overskrive det og skape andre feil.I henhold til leser-skribentproblemet, må programmerere bestemme om lesere eller forfattere har prioritet, og hvordan de skal håndtere tilgang.Lesere eller forfattere kan få prioritert, eller systemet kan tildele tilgang etter først til mølla -basis.Denne tredje løsningen kan forhindre lange ventetid, men kan komme med egne problemer.

I en løsning der leserne har prioritet, forutsetter systemet at enhver leser som ber om tilgang skal tillates først, når tilgangen blir tilgjengelig.Dette betyr at alle forfattere som ønsker 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 leserforfatterproblemet.Når en leser er ferdig med en ressurs, kan en forfatter hoppe inn for å gjøre en endring.Dette gjelder ikke bare for brukerhandlinger som å prøve å lagre et dokument, men for interne prosesser inne i datamaskinen som holder systemet i gang.

Et annet alternativ lar leserforfatterproblemet balansere behovene til begge parter, slik at hver prosesseringstrådtilgangsom det kommer.Dette forhindrer forfattere i å gjøre endringer som overstyrer hverandre eller forvirrer leserne, uten å la leserne vente, eller tvinge forfattere til å holde mens leserne er ferdige.Slike prioriteringer kan bygges inn i et program eller minnetilgangskontroll i en datamaskin.Brukere kan være i stand til å gjøre endringer hvis de er komfortable med programmering og systemet tillater det.