ความแตกต่างระหว่าง Semaphore และ Mutex
สัญญาณ Semaphore vs Mutex
สัญญาณคือโครงสร้างข้อมูลที่ใช้เพื่อให้แน่ใจว่าหลายโพรเซสจะไม่สามารถเข้าถึงได้ทั่วไป ทรัพยากรหรือส่วนที่สำคัญในเวลาเดียวกันในสภาพแวดล้อมการเขียนโปรแกรมแบบขนาน semaphores ใช้เพื่อหลีกเลี่ยงการล็อคที่ตายแล้วและสภาพการแข่งขัน นอกจากนี้ Mutex (Mutual Exclusion Object) ยังใช้เพื่อหลีกเลี่ยงการเข้าถึงทรัพยากรทั่วไปในเวลาเดียวกันโดยใช้กระบวนการหลาย ๆ
Semafore คืออะไร?
เซมาฟอร์เป็นโครงสร้างข้อมูลที่ใช้ในการยกเว้นร่วมกับส่วนที่สำคัญ semaphores ส่วนใหญ่สนับสนุนการดำเนินงานสองเรียกว่ารอ (ที่รู้จักกันในอดีต P) และสัญญาณ (อดีตรู้จักกันในนาม V) การดำเนินการรอดำเนินการบล็อกกระบวนการจนกว่าสัญญาณจะเปิดขึ้นและการดำเนินการสัญญาณจะช่วยให้กระบวนการอื่น ๆ (เธรด) เข้า แต่ละสัญญาณมีส่วนเกี่ยวข้องกับคิวของกระบวนการรอ เมื่อดำเนินการรอโดยเธรดถ้าสัญญาณเปิดอยู่เธรดสามารถดำเนินการต่อ ถ้าสัญญาณถูกปิดเมื่อการดำเนินงานรอเรียกโดยเธรดเธรดถูกบล็อกและต้องรอในคิว การดำเนินการสัญญาณจะเปิดสัญญาณและหากมีเธรดที่รออยู่ในคิวกระบวนการนี้จะได้รับอนุญาตให้ดำเนินการต่อและหากไม่มีเธรดรอในคิวสัญญาณจะจดจำไว้สำหรับเธรดต่อไป มี semaphores สองแบบที่เรียกว่า semaphores mutex และนับ semaphores เซมิคอนดักเตอร์ของ Mutex อนุญาตให้มีการเข้าถึงทรัพยากรเพียงอย่างเดียวและการนับเซเฟลชันอนุญาตให้มีหลายเธรดเข้าถึงทรัพยากร (ซึ่งมีหลายหน่วยงาน)
Mutex คืออะไร?
เมื่อโปรแกรมคอมพิวเตอร์เริ่มต้นขึ้นโปรแกรมจะสร้าง mutex และแนบไปกับรีซอร์ส เมื่อทรัพยากรถูกใช้โดยเธรดจะถูกล็อคและเธรดอื่น ๆ ไม่สามารถใช้งานได้ ถ้าเธรดอื่นต้องการใช้ทรัพยากรเดียวกันจะต้องทำคำขอ จากนั้นเธรดนั้นจะถูกวางไว้ในคิวจนกว่าหัวข้อแรกจะเสร็จสิ้นพร้อมกับรีซอร์ส เมื่อเธรดแรกจบด้วยรีซอร์สระบบจะนำล็อกออกและเธรดที่รอคิวจะได้รับสิทธิ์เข้าถึงรีซอร์ส ถ้ามีหลายเธรดรออยู่ในคิวจะมีการเข้าถึงแบบหมุนเวียน ในทางปฏิบัติเมื่อ mutex สลับการเข้าถึงรีซอร์สระหว่างหลายเธรดก็จะมองเห็นได้เนื่องจากหลายเธรดกำลังใช้แหล่งข้อมูลพร้อม ๆ กัน แต่ภายในมีเพียงหัวข้อเดียวที่เข้าถึงทรัพยากรในเวลาที่กำหนดเท่านั้น
ความแตกต่างระหว่าง Semaphore และ Mutex คืออะไร?
แม้ว่าจะมีการใช้ทั้ง semaphores และ mutex object เพื่อให้ได้การยกเว้นกันในสภาพแวดล้อมการเขียนโปรแกรมแบบขนาน แต่ก็มีความแตกต่างกันบ้าง วัตถุ mutex ช่วยให้เธรดเดียวสามารถใช้ทรัพยากรหรือส่วนที่สำคัญได้ในขณะที่ semaphores อนุญาตให้มีการเข้าถึงทรัพยากรที่มีอยู่อย่าง จำกัด (ภายใต้จำนวนสูงสุดที่อนุญาต)กับวัตถุ mutex หัวข้ออื่น ๆ ที่ต้องการเข้าถึงทรัพยากรต้องรอในคิวจนกว่าเธรดปัจจุบันจะเสร็จสิ้นโดยใช้รีซอร์ส