שאלה במימוש
יש פונקציה
יש פונקציה
myTimer(func f, time t)
שיודעת להפעיל את הפונקציה f תוך זמן t. הבעייה היא שהפונקציה הזו היא נטולת זכרון, כלומר אם תקרא לפונקציה הזו פעמיים (עם פרמטרים שונים) רק הקריאה האחרונה תתבצע. למשל נאמר שקראנוtimer(f,10) timer(g,11)
אז הפונקציה g תתבצע תוך 11 שניות מרגע הקריאה אבל הפונקציה f לא תתבצע בכלל. המשימה היא לכתוב את הפונקציהmyTimer(func f, time t)
שכן תהיה בעלת זכרון ולא "תזכור" רק את הקריאה האחרונה שנעשתה לה ותפעל באופן המצופה . העניין הוא שכתוב במפורש בחידה שאי אפשר להשתמש ב- thread-ים. היתה לי סקיצה מסויימת לפתרון החידה- אבל היא לא עובדת ללא thread-ים. חשבתי על להחזיק מבנה נתונים ממוין כמו map שה- key שלו יהיה timeOfExecution וה- value יהיה פוינטר לפונקציה שצריך להפעיל. העניין הוא שכל הנסיונות לעשות את זה ללא therad-ים עלו בתוהו שכן בכל פעם ממלאים את ה- map ומבצעים רק את המשימות שאמורות להתבצע כעת ואז רוצים לחזור מהפונקציה אבל הבעייה היאשאסור להחזיר את הפונקציה כי יתכן שיש ב- map עדיין משימות שזמנן להתבצע עוד לא הגיע ומצד שני אם נהפוך את הפונקציה להיות פונקציה רקורסיבית יתכן שהיא תתקע ולא תחזור עד שאחרונת המשימות לא תתבצע ובינתיים אי אפשר יהיה להשחיל עוד קריאות ל my_timer. לכן הסקתי שאי אפשר לממש את זה בלי thread-ים למרות ששואל השאלה התעקש שכן. מה דעתכם?