ความแตกต่างระหว่าง Mutex และ Semaphore ความแตกต่างระหว่าง

Anonim

Mutex vs. Semaphore

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

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

การใช้ความคล้ายคลึงกันใน mutex, semaphores คือจำนวนของคีย์ที่คล้ายกันที่สามารถเข้าถึงจำนวนห้องเดียวกันกับล็อคที่คล้ายคลึงกัน สัญญาณหรือค่าของการนับสัญญาณจะขึ้นอยู่กับจำนวนคน (เธรด) ที่เข้าหรือออกจากห้อง ถ้ามีห้องพัก 5 ห้องและทั้งหมดจะถูกครอบครองจากนั้นจำนวนสัญญาณจะเป็นศูนย์ ถ้าสองออกจากห้องแล้วนับเป็นสองและสองคีย์จะได้รับไปสองต่อไปในคิว

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

ดังนั้นโดยทั่วไป mutex จะถือว่าเป็นสัญญาณที่มีค่าหนึ่ง

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

ในทางทฤษฎี mutex และ (binary) semaphores มีความหมายเหมือนกัน การดำเนินการ mutex สามารถทำได้โดยใช้ semaphores และวิธีอื่น ๆ ก็คือ อย่างไรก็ตามในทางปฏิบัติอาจแตกต่างกันเล็กน้อย

Mutexes มีวัตถุประสงค์เพื่อใช้สำหรับการยกเว้นร่วมกันเท่านั้นและ semafhores binary มีไว้เพื่อใช้สำหรับการยกเว้นและแจ้งเตือนเหตุการณ์ แม้ว่าจะมีความคล้ายคลึงกันมากในแง่ของการใช้งานและความหมายทั่วไป แต่ก็มีความแตกต่างกัน

สรุป:

1. Mutex มักใช้เพื่อทำให้เป็นอันดับในการเข้าถึงทรัพยากรทั่วไปในขณะที่สัญญาณเป็นจำนวนการเข้าถึงที่เกิดขึ้นพร้อมกัน

2 Mutex เหมือนกับสัญญาณที่มีจำนวนหนึ่ง

3 Mutex อนุญาตให้เธรดเดียวเข้าถึงได้ในขณะที่ semaphores สามารถส่งสัญญาณพร้อมกันโดยเธรดหรือกระบวนการใด ๆ

4 Semaphores เหมาะสำหรับการซิงโครไนซ์และมักใช้สำหรับการแจ้งเตือนกิจกรรมและการยกเว้นร่วมกันในขณะที่ mutex ใช้สำหรับการยกเว้นเท่านั้น