ההבדל בין Mutex לבין האירוע ההבדל בין

Anonim

Mutex לעומת אירוע

ב C #, יש הרבה אפשרויות שונות סינכרון השחלה. שני יותר בשימוש נרחב הם mutex ואירוע. מה בדיוק ההבדל בין שני אלה? איזה מהם הוא אפשרות טובה יותר?

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

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

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

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

אירועים הם יותר של משתנה תנאי, בניגוד Mutex, שהוא יותר כמו

לפקח על כמה המינוח, או שזה יכול להיות צורה מסורתית של סמפור / mutex.

סיכום:

1. אפשרות האירוע יכולה לתת חוטים אפשרות לחסום עד אירוע משודר, ולכן את השם "האירוע. "

2. אירוע הוא בעצם אובייקט הקרנל בעל שתי מצבים. בדרך כלל, אירוע מסמן את בואו של אירוע ולפעמים אפילו את הסוף של פעולת קלט / פלט.

3. "Mutex" מייצג אי הכללה הדדית. זהו סוג של מנגנון תיאום מתוכנן למשאבים המשותפים.

4. Mutex מחויבת סינכרון interprocess הוא אובייקט מצב ליבה. אירועים המיועדים לסינכרון מרובה הליכי משנה בשיטה אחת נמצאים באובייקט מצב משתמש.

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