לדלג לתוכן

פרויקט מנוע עבודה אסינכרוני

נרחיב אחרי פרק 6 את מנוע הIOCP כך שישרת כמה clients, יקבל ביטול לפי מזהה ויציע גם מתאם coroutine. אותה פעולה צריכה לשמור על אותה משמעות כאשר קוראים לה דרך callback או דרך co_await.

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

מריצים סדרה של מיליון פעולות קטנות בתצורות עומס שונות, לצד בדיקות דטרמיניסטיות של immediate failure, pending, cancel וcompletion. מספר ההרצות הוא יעד stress לימודי, ואינו מחליף הוכחת בעלות ויחסי happens-before.

מגישים תרשים של frame, OVERLAPPED וbuffer בכל מעבר. מוסיפים fault injection לפני הרשמה, אחרי הרשמה ולפני חידוש coroutine. ההרחבה נבדקת גם כאשר frame של caller מבקש להיסגר בזמן שהפעולה הטבעית עוד פעילה.