לדלג לתוכן

8.10 - ביטול עבודה חיצונית וסגירת callbacks - תרגול

תרגול סגירת פונקציות חזרה

תרגיל ראשון

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

תרגיל שני

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

תרגיל שלישי

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