สัญญาณกับจอภาพ
Semaphore เป็นโครงสร้างข้อมูลที่ใช้เพื่อให้แน่ใจว่าหลายกระบวนการไม่เข้าถึงทรัพยากรทั่วไปหรือส่วนที่สำคัญในเวลาเดียวกันในสภาพแวดล้อมการเขียนโปรแกรมแบบคู่ขนาน สัญญาณถูกใช้เพื่อหลีกเลี่ยงการล็อคตายและสภาพการแข่งขัน มอนิเตอร์เป็นโครงสร้างภาษาโปรแกรมที่ใช้เพื่อหลีกเลี่ยงหลายกระบวนการที่เข้าถึงทรัพยากรทั่วไปพร้อมกัน ดังนั้นรับประกันการยกเว้นร่วมกัน มอนิเตอร์ใช้ตัวแปรแบบมีเงื่อนไขเพื่อให้งานนี้สำเร็จ
สัญญาณคืออะไร
Semaphore เป็นโครงสร้างข้อมูลที่ใช้ในการแยกส่วนที่สำคัญร่วมกันสัญญาณส่วนใหญ่สนับสนุนการดำเนินการสองอย่างที่เรียกว่ารอ (รู้จักกันในชื่อ P) และสัญญาณ (รู้จักกันในชื่อ V) การดำเนินการรอจะบล็อกกระบวนการจนกว่าสัญญาณจะเปิดและการทำงานของสัญญาณจะอนุญาตให้กระบวนการอื่น (เธรด) เข้าสู่ สัญญาณแต่ละอันสัมพันธ์กับคิวของกระบวนการรอ เมื่อเธรดเรียกการดำเนินการรอ หากสัญญาณเปิดอยู่ เธรดสามารถดำเนินการต่อได้ ถ้าสัญญาณถูกปิดเมื่อมีการเรียกการดำเนินการรอโดยเธรด เธรดจะถูกบล็อกและต้องรอในคิว การทำงานของสัญญาณจะเปิดสัญญาณ และหากมีเธรดที่รออยู่ในคิวอยู่แล้ว กระบวนการนั้นก็จะได้รับอนุญาตให้ดำเนินการต่อ และหากไม่มีเธรดที่รออยู่ในคิว สัญญาณจะถูกจดจำสำหรับเธรดถัดไป สัญญาณมีสองประเภทที่เรียกว่า mutex semaphores และ semaphores การนับ Mutex semaphores อนุญาตให้เข้าถึงทรัพยากรเพียงครั้งเดียวและนับ semaphores อนุญาตให้หลายเธรดเข้าถึงทรัพยากร (ซึ่งมีหลายหน่วยที่พร้อมใช้งาน)
จอภาพคืออะไร
จอภาพคือโครงสร้างภาษาโปรแกรมที่ใช้ในการควบคุมการเข้าถึงข้อมูลที่ใช้ร่วมกัน มอนิเตอร์สรุปโครงสร้างข้อมูลที่ใช้ร่วมกัน โพรซีเดอร์ (ที่ทำงานบนโครงสร้างข้อมูลที่ใช้ร่วมกัน) และการซิงโครไนซ์ระหว่างการเรียกใช้โพรซีเดอร์พร้อมกัน ผู้ตรวจสอบดูแลตรวจสอบให้แน่ใจว่าข้อมูลไม่ต้องเผชิญกับการเข้าถึงที่ไม่มีโครงสร้าง และรับประกันว่าดอกยาง (ซึ่งเข้าถึงข้อมูลของจอภาพผ่านขั้นตอน) โต้ตอบในลักษณะที่ถูกต้อง มอนิเตอร์รับประกันการยกเว้นร่วมกันโดยอนุญาตให้เธรดเดียวดำเนินการตามขั้นตอนการตรวจสอบในเวลาที่กำหนด หากเธรดอื่นพยายามเรียกใช้เมธอดในมอนิเตอร์ ในขณะที่เธรดกำลังดำเนินการตามโพรซีเดอร์ในมอนิเตอร์อยู่แล้ว โพรซีเดอร์ที่สองจะถูกบล็อกและต้องรอในคิว จอภาพมีสองประเภทที่ชื่อว่า Hoare monitors และ Mesa monitors พวกเขาส่วนใหญ่ต่างกันในความหมายของการจัดตารางเวลา
Semaphore กับ Monitor ต่างกันอย่างไร
แม้ว่าทั้งเซมาฟอร์และมอนิเตอร์จะถูกใช้เพื่อให้เกิดการยกเว้นร่วมกันในสภาพแวดล้อมการเขียนโปรแกรมแบบคู่ขนาน แต่ก็ต่างกันในเทคนิคที่ใช้เพื่อให้บรรลุงานนี้ ในมอนิเตอร์ โค้ดที่ใช้เพื่อให้เกิดการยกเว้นร่วมกันจะอยู่ในที่เดียวและมีโครงสร้างมากกว่า ในขณะที่โค้ดสำหรับเซมาฟอร์ถูกแจกจ่ายเป็นการรอและการเรียกใช้ฟังก์ชันสัญญาณ นอกจากนี้ มันง่ายมากที่จะทำผิดพลาดเมื่อใช้งานสัญญาณ ในขณะที่มีโอกาสน้อยมากที่จะทำผิดพลาดเมื่อใช้งานจอภาพ นอกจากนี้ มอนิเตอร์ใช้ตัวแปรเงื่อนไข ในขณะที่เซมาฟอร์ไม่ใช้