events vs mutex

S h a r k 1 8

New member
events vs mutex

אני לומד כעת איך להתשמש באובייקטים האלה. דבר אחד שלא ברור לי זה מה ההבדל ביניהם.
מתי עדיף יהיה להשתמש ב event ומתי ב mutex?
 

vinney

Well-known member
השאלה לא ממש ברורה

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

vinney

Well-known member
אז אתה מדבר על מחלקות ספציפיות

של ספריה מסוימת, לא מושגים אבסטרקטיים. הEvent Object של חלונות וודאי שמשתמש במיוטקסים, פשוט זה מוסתר בתוך המחלקה.

היתרון לשימוש בevent הוא שיש לו payload כלשהו שמועבר אלייך, ולא סתם משחרר נעילה. אתה יכול לברור לאיזה מקרים להגיב, ומאילו להתעלם.
 

S h a r k 1 8

New member
OK. המשפט האחרון הוא קצת סינית.

תוכל לפרט על ה payload? מה אני מקבל כשאני משחרר EVENT ?
 

vinney

Well-known member
בחלונות מייקרוסופט ידועים בהמצאת הגלגל

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

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

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

S h a r k 1 8

New member
אבל...

WaitForMultipleObjects אפשר להפעיל ב windows גם על מערך של mutex-ים. מה שזה אומר זה שאני יכול להישאר עם mutex-ים ועדיין לוודא שכל הנעילות השתחררו.

נראה לי שאתה מדבר באופן כללי על המושגים האלה, בעוד שאני מתייחס ספיציפית למה שקורה במחלקה <windows.h>.
 

vinney

Well-known member
אתה צודק, אני מבלבל שטויות

עבר קצת יותר מדי זמן מאז שכתבתי משהו בחלונות לאחרונה:)
 

S h a r k 1 8

New member
בתרגול נאמר שההבדל העיקרי הוא שב Mutex

יש בעלות (ownership), וב event אין.
 

vinney

Well-known member
נראה לי שבמימוש הזה של מייקרוסופט

זה די נכון.
 
למעלה