לדלג לתוכן

תרגול קורוטינות מעל מערכת ההפעלה

הוסיפו ל־Step מן ההרצאה אובייקט מקומי שמדפיס הודעה בעת בנייה והרס. בדקו בנפרד סיום רגיל והריסה של Step אחרי ההשהיה הראשונה. הסבירו מדוע שתי האפשרויות חוקיות בדוגמה שאין בה I/O פעיל.

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

עבור מתאם IOCP, כתבו טבלת מעברים של רישום, כשל הגשה, pending, completion וביטול. לכל מעבר ציינו מי רשאי להרוס את המסגרת. נתחו במיוחד completion שמגיע לפני החזרה מ־await_suspend במנוע רב־תהליכוני.

לבסוף תכננו בדיקה שבה הקורוטינה מסתיימת מיד אחרי co_await. הסבירו איזה שימוש של ה־dispatcher בבקשה לאחר resume יהיה שגוי, ואיך מונעים אותו במנוע בעל thread יחיד.