“Lugejate-kirjutajate probleem” on programmeerimise dilemma, mis tekib siis, kui mitu lugejat ja kirjutajat vajavad juurdepääsu samale ressursile. Kui neile kõigile võimaldataks korraga juurdepääs, võivad tekkida sellised probleemid nagu ülekirjutamine, mittetäielik teave ja muud probleemid. Seetõttu võivad programmeerijad süsteemi ja kasutajate vajadusi arvestades piirata juurdepääsu kontrollimiseks, millised töötlemislõimed ja millal ressurssi näevad. Lugeja-kirjutaja probleemi lahendamiseks on mitu võimalust. Üks levinumaid lahendusi hõlmab semaforide kasutamist oleku märgistamiseks ja juurdepääsu kontrollimiseks.
Ühest vaatenurgast võib ressurssidele turvaliselt juurde pääseda suvaline arv lugejaid, kuna nad ei tee sisus muudatusi. Kui kirjanik võrrandisse siseneb, muutub olukord keerulisemaks. Kui lõim kirjutab samal ajal, kui teised lõimed loevad, ei pruugi lugejad saada õiget teavet. Nad võivad saada ainult osa muudatusest või võivad näha aegunud teavet ja arvata, et see on õige.
Probleemi võib tekitada ka rohkem kui üks kirjanik. Sama sisu samaaegsed muutmised võivad selle üle kirjutada ja tekitada muid vigu. Lugejate-kirjutajate probleemi all peavad programmeerijad otsustama, kas lugejatel või kirjutajatel on eelisõigus ja kuidas juurdepääsu käsitleda. Lugejatele või kirjutajatele võib määrata prioriteedi või süsteem võib määrata juurdepääsu põhimõttel, kes saab, see mees. See kolmas lahendus võib vältida pikki ootamisi, kuid sellega võivad kaasneda omaette probleemid.
Lahenduses, kus lugejatel on eelisõigus, eeldab süsteem, et iga juurdepääsu taotlev lugeja tuleks esmalt sisse lubada, kui juurdepääs vabaneb. See tähendab, et kõik kirjutajad, kes soovivad ressursile juurde pääseda, peavad ootama. Vastupidiselt võib süsteem eeldada, et kuna kirjanikud peavad tegema muudatusi, mis võivad lugejaid mõjutada, tuleks neile lugejate-kirjutajate probleemi puhul anda prioriteet. Kui lugeja on ressursi kasutamise lõpetanud, võib kirjanik muudatusi tegema hakata. See ei kehti mitte ainult kasutaja toimingute kohta, nagu näiteks dokumendi salvestamine, vaid ka arvutisiseste protsesside kohta, mis hoiavad süsteemi töös.
Teine võimalus võimaldab lugejate-kirjutajate probleemil tasakaalustada mõlema poole vajadusi, võimaldades igale töötlemislõimele juurdepääsu saabumisel. See takistab kirjutajatel tegemast muudatusi, mis üksteist tühistavad või lugejaid segadusse ajavad, jätmata lugejaid ootama või sundimata kirjanikke hoidma, kuni lugejad lõpetavad. Sellised prioriteedid saab sisseehitada tarkvaraprogrammi või arvuti mälu juurdepääsukontrolli. Kasutajad võivad olla võimelised muudatusi tegema, kui nad on programmeerimisega rahul ja süsteem seda võimaldab.