Skip to main content

Apa masalah pembaca-penulis?

Masalah pembaca-penulis adalah dilema pemrograman yang dibuat ketika banyak pembaca dan penulis memerlukan akses ke sumber daya yang sama.Jika mereka semua diizinkan mengakses sekaligus, masalah seperti menimpa, informasi yang tidak lengkap, dan masalah lain mungkin muncul.Oleh karena itu, pemrogram dapat membatasi akses ke kontrol utas pemrosesan mana yang melihat sumber daya dan kapan, mempertimbangkan kebutuhan sistem dan pengguna.Ada beberapa cara untuk mengatasi masalah pembaca-penulis.Salah satu solusi yang paling umum melibatkan penggunaan semafor untuk menandai status dan akses kontrol.

Dari satu perspektif, sejumlah pembaca dapat dengan aman mengakses sumber daya karena mereka tidak membuat perubahan pada konten.Setelah seorang penulis memasuki persamaan, situasinya menjadi lebih rumit.Jika utas menulis saat utas lain membaca, pembaca mungkin tidak mendapatkan informasi yang benar.Mereka hanya dapat menerima sebagian dari perubahan, atau mungkin melihat informasi yang sudah ketinggalan zaman dan berpikir itu akurat.

Lebih dari satu penulis juga dapat menciptakan masalah.Perubahan simultan pada konten yang sama dapat menimpanya dan membuat kesalahan lain.Di bawah masalah pembaca-penulis, programmer harus memutuskan apakah pembaca atau penulis memiliki prioritas, dan bagaimana menangani akses.Pembaca atau penulis dapat ditugaskan prioritas, atau sistem dapat menetapkan akses atas dasar pertama, melayani pertama.Solusi ketiga ini dapat mencegah menunggu lama, tetapi bisa datang dengan masalahnya sendiri.

Dalam solusi di mana pembaca memiliki prioritas, sistem mengasumsikan bahwa setiap pembaca yang meminta akses harus diizinkan di terlebih dahulu, ketika akses tersedia.Ini berarti bahwa setiap penulis yang ingin mengakses sumber daya bisa menunggu.Sebaliknya, sistem mungkin berasumsi bahwa karena penulis perlu melakukan perubahan yang mungkin mempengaruhi pembaca, mereka harus diberikan prioritas di bawah masalah pembaca-penulis.Ketika seorang pembaca selesai dengan sumber daya, seorang penulis dapat melompat untuk membuat perubahan.Ini berlaku tidak hanya untuk tindakan pengguna seperti mencoba menyimpan dokumen, tetapi untuk proses internal di dalam komputer yang menjaga sistem tetap berjalan.

Opsi lain memungkinkan masalah pembaca-penulis untuk menyeimbangkan kebutuhan kedua belah pihak, yang memungkinkan setiap pengolahan akses utas pemrosesan.Saat itu tiba.Ini mencegah penulis dari membuat perubahan yang saling mengesampingkan atau membingungkan pembaca, tanpa membuat pembaca menunggu, atau memaksa penulis untuk dipegang sementara pembaca selesai.Prioritas tersebut dapat dibangun ke dalam program perangkat lunak atau kontrol akses memori di komputer.Pengguna mungkin dapat melakukan perubahan jika mereka merasa nyaman dengan pemrograman dan sistem memungkinkannya.