בס"ד

אנלוגיית המלצר והשף: Async/Await ב-#C

למידה אינטואיטיבית של תהליכונים ומשימות באמצעות סימולציית מסעדה בזמן אמת

🍽️ בחר תרחיש במסעדה:

⏱️ קצב הדמיה והסברים:
פי 2.5 (איטי מאוד)
C# Code (Left-to-Right Layout)
1// --- אסינכרוני עם await ---
2async Task ServeCustomersAsync()
3{
4 Console.WriteLine("Taking Order...");
5
6 // המלצר מוסר את המשימה לשף וחוזר מיד ללקוחות!
7 await CookSteakAsync();
8
9 Console.WriteLine("Steak Delivered!");
10}
11
12async Task CookSteakAsync()
13{
14 // השף מבשל במטבח במקביל
15 await Task.Delay(3000);
16}
💡

האנלוגיה למציאות והסבר שלב-אחר-שלב:

🎉 ההדמיה הושלמה בהצלחה! כעת ברור יותר כיצד ה-await משאיר את המלצר פנוי ומדוע חסימה סינכרונית קופאת!

🛋️ 🍽️
שולחנות הלקוחות
מייצג את ממשק המשתמש (UI)
🏃‍♂️
המלצר
מייצג את ה-Main Thread
🍳 👨‍🍳
המטבח (השף)
מייצג את ה-Thread Pool
המלצר - חוט ראשי (Main Thread) הוגש בהצלחה!
לקוחות 🛋️
מטבח 🍳
🏃‍♂️
📝 מוסר הזמנה לשף
השף במטבח - משימת רקע (Background Task) פנוי
מתחיל לבשל 🔥
המנה מוכנה! 🍽️
👨‍🍳
המלצר משרת לקוחות / פנוי (UI זמין)
המלצר קפוא וממתין במטבח (UI תקוע!)
המלצר שוחרר לשרת שולחנות אחרים
השף במטבח מבשל ברקע (Task running)
© איילת ויץ