לדלג לתוכן

תרגול גבולות I/O אסינכרוני

כתבו פונקציה שמעתיקה קובץ חדש באמצעות ReadAsync ו־WriteAsync עם buffer יחיד. השתמשו ב־FileMode.CreateNew ליעד כדי שלא לדרוס קובץ קיים, ותעדו מה נשאר ביעד אם הפעולה בוטלה באמצע. אל תציגו העתקה חלקית כאילו היתה commit אטומי.

הוסיפו גרסה שמריצה ארבע העתקות במקביל עם buffers נפרדים. מדדו את התקציב הכולל המינימלי של ה־buffers והסבירו למה שיתוף מערך אחד בין ארבע פעולות חיות הוא הפרת בעלות.

השוו את הניסוי לגרסה סינכרונית בתוך Task.Run תחת מגבלת מקביליות זהה. הגישו מדידה של workers ו־latency, והסבירו למה תוצאה של קובץ קטן על cache חם אינה מספיקה להכללה על דיסק אמיתי.