"Okuyucular-yazarlar sorunu", birden fazla okuyucu ve yazarın aynı kaynağa erişmesi gerektiğinde ortaya çıkan bir programlama ikilemidir. Bir kerede hepsine erişime izin verildiyse, üzerine yazma, eksik bilgiler ve diğer sorunlar gibi sorunlar ortaya çıkabilir. Bu nedenle, programcılar hangi işlem ipliklerinin kaynağı gördüklerini ve ne zaman sistemin ve kullanıcıların ihtiyaçlarını göz önünde bulunduracağını kontrol etme erişimini kısıtlayabilir. Okur-yazar sorununu çözmenin birkaç yolu var. En yaygın çözümlerden biri, durumu işaretlemek ve erişimi kontrol etmek için semaforların kullanılmasıdır.
Bir bakış açısından, herhangi bir sayıda okuyucu, bir içeriğe güvenle erişebilir, çünkü içeriğinde değişiklik yapmazlar. Bir yazar denkleme girdiğinde, durum daha karmaşık hale gelir. Başka bir konu okunurken bir konu yazarsa, okuyucular doğru bilgi alamayabilir. Değişikliğin yalnızca bir kısmını alabilirler veya eski bilgileri görebilir ve doğru olduğunu düşünebilirler.
Birden fazla yazar aynı zamanda bir problem yaratabilir. Aynı içeriğe aynı anda yapılan değişiklikler üzerine yazabilir ve başka hatalar oluşturabilir. Okuyucular-yazarlar sorunu altında, programcılar, okuyucuların veya yazarların önceliğinin olup olmadığına ve erişimin nasıl ele alınacağına karar vermelidir. Okuyucular veya yazarlara öncelik verilebilir veya sistem ilk gelene ilk hizmet esasına göre erişim atayabilir. Bu üçüncü çözüm, uzun beklemeleri engelleyebilir, ancak kendi sorunlarıyla gelebilir.
Okuyucuların öncelikli olduğu bir çözümde, sistem erişim için uygun olduğunda, erişim isteyen herhangi bir okuyucunun öncelikle girmesine izin verilmesi gerektiğini varsayar. Bu, kaynağa erişmek isteyen herhangi bir yazarın beklemesi gerekebileceği anlamına gelir. Tersine, sistem, yazarların okuyucuları etkileyebilecek değişiklikler yapması gerektiğinden, okuyucu-yazarlar problemi altında öncelik verilmesi gerektiğini varsayabilir. Bir okuyucu bir kaynakla yapıldığında, bir yazar değişiklik yapmak için içeri atlayabilir. Bu, yalnızca bir belgeyi kaydetmeye çalışmak gibi kullanıcı eylemleri için değil, bilgisayarın çalışmasını sağlayan bilgisayarın içindeki dahili işlemler için de geçerlidir.
Diğer bir seçenek de, okuyucu-yazar sorununun her iki tarafın ihtiyaçlarını dengelemesini sağlayarak, her işlem parçacığının ulaştığı anda erişmesini sağlar. Bu, yazarların, okurları bekletmeden veya okuyucular bittiğinde tutmaya zorlamadan, birbirlerini geçersiz kılan veya okuyucuları şaşırttan değişiklikler yapmasını önler. Bu öncelikler bir yazılım programına ya da bir bilgisayardaki hafıza erişim kontrolüne dahil edilebilir. Kullanıcılar programlama konusunda rahatlarsa değişiklik yapabilirler ve sistem buna izin verir.


