ההבדל בין Mutex ו Semaphore ההבדל בין

Anonim

Mutex לעומת סמפור

מוטקס מקביל מפתח יחיד לחדר. אדם מחזיק את המפתח, אשר מקביל חוט, הוא היחיד שיכול לקבל גישה לחדר. האדם עם גישה ואז צריך לוותר על המפתח לאדם הבא בתור. לכן, מוטקס יכול להיות משוחרר רק על ידי חוט זה רוכש אותו.

- <->

מוטקס משמש בדרך כלל כדי להמשכים את הגישה לחלק בקוד של קוד חוזר "" סוג של קוד אשר לא ניתן לבצע על ידי מספר נושאים בבת אחת. רק חוט יחיד מותר לקטע. זה כוחות כוחות אחרים בתור לחכות. לפני חוט גישה רווח, הוא יצטרך לחכות עד פתיל לפני שהוא נותן את החלק.

באמצעות האנלוגיה זהה mutex, סמפור הם מספר מפתחות דומים שיכולים לגשת למספר זהה של חדרים עם מנעולים דומים. סמפור או הערך של ספירת סמפור יהיה תלוי במספר האנשים (האשכולות) אשר נכנסים או יוצאים מהחדר. אם יש 5 חדרים והם כולם תפוסים, אז ספירת סמפור היא אפס. אם שניים עוזבים את החדר, אז הספירה היא שתיים ואת שני המפתחות ניתנים הבא שני בתור.

עם זאת נאמר, semaphores ניתן אותות במקביל על ידי כל הליך משנה או תהליך והם אידיאליים עבור יישומים הדורשים סנכרון. עם זאת, סמפור נעשה שימוש יעיל להגביל את מספר משתמשים בו זמנית של משאב משותף מבוסס על ספירת סמפור המקסימלית.

אז בעצם, מוטקס יכול להיחשב סמפור שיש ערך אחד.

הפיצול וההוספה של הסמפור תלויים בשאלה אם שרשורים מבקשים גישה למשאב המשותף או עוזבים את הקטע.

בתיאוריה, mutex ו (בינארי) סמפור הם דומים מבחינה סמנטית. יישום mutex ניתן לעשות באמצעות סמפור וכך גם להיפך. עם זאת, במובן המעשי, הם יכולים להיות קצת שונה.

Mutexes מיועדים להיות מיושמים על אי הכללה הדדית בלבד, סמפאורים בינאריים נועדו לשמש אי הכללה הדדית והודעת האירוע. למרות שהם דומים מאוד במונחים של יישום סמנטיקה כללית, הם משמשים אחרת.

סיכום:

1. Mutex משמש בדרך כלל כדי בהמשכים גישה למשאב משותף בעוד סמפור הוא מספר גישה בו זמנית.

2. Mutex הוא כמו סמפור עם ספירה של אחד.

3. Mutex מאפשר רק חוט אחד יש גישה בעוד semaphores יכול להיות מאותתים בו זמנית על ידי כל הליך משנה או תהליך.

4. סמפור הם אידיאליים לסינכרון ולעתים קרובות משמשים להודעות על אירועים והדרה הדדית בעוד mutex מוחל רק על אי הכללה הדדית.