thread vs async await תהייה לגבי אסינכרוניות ב C# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

thread vs async await תהייה לגבי אסינכרוניות ב C#


dani1999

Recommended Posts

אני מפתח ב C# מערכת חדשה ותוהה לגבי נקודה שם
אני יודע להשתמש ב thread/threadPoll/ async -await אבל חסר לי סגירה של הנושא.
אני רוצה לפתח ב C# מעבר על רשימה של תיקיות ומחיקה של כל הקבצים בתיקיות האלה שמתחילים באות a (לדוגמא)
אז נניח שיש לי list של נתיבים.
בנוסף, אני רוצה לשלוט על כמות ה THREAD שירוצו
מספר שאלות בנושא
1- הרי כל ה THREAD שרצים , הם ירוצו תחת אותו פרוסס,
אז מה ההבדל במהירות אם ארוץ עם כמה THREAD או שרוץ עם THREAD אחד אבל כאשר אני מוחק קובץ אמחוק בפונקציה שהיא async ועל המחיקה אעשה await ?(ואז בזמן במחיקה ה thread שלי ימשיך לפעולות אחרות?)
אם ארוץ עם כמה THREAD הרי יש contex switch בניהם וזה אומר בזבוז זמן(כלשהו) במעבר בניהם.
 
 
2-
 
 אם אני עושה קוד כזה
 
public static class FileExtensions {
   public static Task DeleteAsync(this FileInfo fi) {
      return Task.Factory.StartNew(() => fi.Delete() );
   }
}

FileInfo fi = new FileInfo(fileName);
await fi.DeleteAsync(); // C# 5

 

מה זה אומר בפועל?
אני עושה AWAIT על הפעולה deleteAsync אבל בפועל יפתח THREAD (מתוך THREADPOOL ) שיעשה זאת, וידרוש זמן CPU שהוא מחכה.
זה אומר שיהיה לי בסוף בזבוז זמן CPU על המתנה למחיקה , נכון?
לא כמו פעולה async אמיתית שאם אני עושה עליה AWAIT אני נשאר ב THREAD שלי(וממשיך לעבוד על דברים אחרים) ומקבל התראה כאשר הפעולה האסינכרונית נגמרה
 
3-לא ראיתי דרך ב C#  לעשות מחיקת קובץ בצורה אסינכרונית ( שבאמת יהיה אסינכרוני עד ממש ה KERNEL )
תודה רבה!
קישור לתוכן
שתף באתרים אחרים

השאלות שלך לא ממוקדות אבל אנסה לענות בכל זאת.

קודם כל למה שתרצה לשלוט על כמות ה Threads שיבצעו את העבודה ? למה זה חשוב לך ?

אם יש לך List של נתיבים לתיקיות שאתה רוצה למחוק אז הייתי משתמש ב Parallel.ForEach. אם אתה רוצה יכולת למחוק תיקייה ספציפית בעזרת Extension method כמו בדוגמה שלך פה אז עדיף להשתמש ב Task.Run במקום Task.Factory.StartNew מהסיבות שמצויינות בבלוג הזה של סטפן קלירי: http://blog.stephencleary.com/2013/08/startnew-is-dangerous.html

ואני בכלל ממליץ בחום על קריאה של המאמר הזה (שוב אותו בחור): https://blog.stephencleary.com/2012/02/async-and-await.html - זה עשה לי הרבה סדר בכל מה שקשור ב async await. גם כתוב בשפה פשוטה וקלילה.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...