Skip to main content

ปัญหาผู้อ่านนักเขียนคืออะไร?

ปัญหาผู้อ่านผู้เขียนคือภาวะที่กลืนไม่เข้าคายไม่ออกการเขียนโปรแกรมที่สร้างขึ้นเมื่อผู้อ่านและนักเขียนหลายคนต้องการการเข้าถึงทรัพยากรเดียวกันหากพวกเขาได้รับอนุญาตให้เข้าถึงได้ในครั้งเดียวปัญหาเช่นการเขียนทับข้อมูลที่ไม่สมบูรณ์และปัญหาอื่น ๆ อาจเกิดขึ้นดังนั้นโปรแกรมเมอร์อาจ จำกัด การเข้าถึงการควบคุมเธรดที่จะดูทรัพยากรและเมื่อพิจารณาถึงความต้องการของระบบและผู้ใช้มีหลายวิธีในการแก้ไขปัญหาผู้อ่านนักเขียนหนึ่งในโซลูชันที่พบบ่อยที่สุดเกี่ยวข้องกับการใช้เซมาฟอร์เพื่อตั้งค่าสถานะและการเข้าถึงการควบคุม

จากมุมมองหนึ่งผู้อ่านจำนวนหนึ่งสามารถเข้าถึงทรัพยากรได้อย่างปลอดภัยเพราะพวกเขาไม่ได้ทำการเปลี่ยนแปลงเนื้อหาเมื่อนักเขียนเข้าสู่สมการสถานการณ์จะซับซ้อนมากขึ้นหากเธรดกำลังเขียนในขณะที่เธรดอื่นกำลังอ่านผู้อ่านอาจไม่ได้รับข้อมูลที่ถูกต้องพวกเขาสามารถได้รับเพียงบางส่วนของการเปลี่ยนแปลงหรืออาจเห็นข้อมูลที่ล้าสมัยและคิดว่าถูกต้อง

นักเขียนมากกว่าหนึ่งคนสามารถสร้างปัญหาได้เช่นกันการเปลี่ยนแปลงเนื้อหาเดียวกันอาจเขียนทับและสร้างข้อผิดพลาดอื่น ๆ พร้อมกันภายใต้ปัญหาผู้อ่านนักเขียนโปรแกรมเมอร์จะต้องตัดสินใจว่าผู้อ่านหรือนักเขียนมีความสำคัญและวิธีการจัดการการเข้าถึงผู้อ่านหรือนักเขียนสามารถกำหนดลำดับความสำคัญได้หรือระบบสามารถกำหนดการเข้าถึงได้ก่อนการให้บริการก่อนวิธีแก้ปัญหาที่สามนี้อาจป้องกันการรอคอยมานาน แต่อาจมาพร้อมกับปัญหาของตัวเอง

ในการแก้ปัญหาที่ผู้อ่านมีความสำคัญระบบจะถือว่าผู้อ่านคนใดที่ขอการเข้าถึงควรได้รับอนุญาตในก่อนเมื่อมีการเข้าถึงซึ่งหมายความว่านักเขียนที่ต้องการเข้าถึงทรัพยากรอาจต้องรอในทางกลับกันระบบอาจสันนิษฐานได้ว่าเนื่องจากนักเขียนจำเป็นต้องทำการเปลี่ยนแปลงที่อาจส่งผลกระทบต่อผู้อ่านพวกเขาควรได้รับความสำคัญภายใต้ปัญหาผู้อ่านผู้อ่านเมื่อผู้อ่านทำด้วยทรัพยากรนักเขียนสามารถกระโดดเข้ามาเพื่อเปลี่ยนแปลงสิ่งนี้ไม่เพียง แต่ใช้กับการกระทำของผู้ใช้เช่นการพยายามบันทึกเอกสาร แต่ไปยังกระบวนการภายในภายในคอมพิวเตอร์ที่ทำให้ระบบทำงานอยู่

ตัวเลือกอื่นช่วยให้ผู้อ่านผู้เขียนมีปัญหาเพื่อความสมดุลของความต้องการของทั้งสองฝ่ายเมื่อมาถึงสิ่งนี้ป้องกันไม่ให้นักเขียนทำการเปลี่ยนแปลงที่แทนที่ซึ่งกันและกันหรือสับสนผู้อ่านโดยไม่ปล่อยให้ผู้อ่านรอหรือบังคับให้นักเขียนถือในขณะที่ผู้อ่านเสร็จสิ้นลำดับความสำคัญดังกล่าวสามารถสร้างขึ้นในโปรแกรมซอฟต์แวร์หรือการควบคุมการเข้าถึงหน่วยความจำในคอมพิวเตอร์ผู้ใช้อาจสามารถเปลี่ยนแปลงได้หากพวกเขาพอใจกับการเขียนโปรแกรมและระบบอนุญาตให้ใช้งานได้