עבור לתוכן

שתי שאלות כלליות ב- ++C

Featured Replies

פורסם

שלום לכולם

אני רוצה להוסיף לתוכנה שלי איזהשהו שעון / טיימר / בקר כך שבכל פרק זמן קבוע ,נגיד כל דקה, התוכנה תבצע איזשהי רוטינה.

איך עושים כזה דבר? זאת אומרת אני רוצה ליצור משהו דינמי פחות או יותר.

שאלה שנייה: ב windows ניתן לקבל מידע על קובץ מתי הוא שונה בפעם האחרונה , ז"א modified date ,איך אפשר לקבל את זה ב- ++C

תודה מראש.

פורסם

הממ... הפונקציה הזו נראית כמו חלק מאיזשהו toolkit חיצוני.

פורסם

זה חלק מהPOSIX.

פורסם

POSIX הוא סטנדרט נחמד אבל הוא לא ANSI, ואי אפשר להניח שבכל מקום יש תמיכת POSIX.

ווינדוס, לדוגמא, הוא לא POSIX ויש לא תמיכה "עקומה" בכל מה שקשור.

טיימרים זה חלק מהסטנדרט של C, ולכן כל פלטפורמה עושה את זה אחרת.

פלטפורמות תואמות POSIX יש להם שיטה מסויימת לעשות את זה.

פורסם

לגבי הטיימר - אתה יכול ליצור ת'רד שמבצע Sleep למשך הזמן שרצית, ואז קורא לפונקציה. לצורך העניין, אפשר להגדיר מחלקה כזאת:


class CyclicTask
{
public:
// CTor and DTor, as usual
void SetFuncToCall (func_type theFuncToCall);
void beginCycle(){
CreateThread(...);
while (whatever)
{
sleep(m_callingInterval);
theFuncToCall();
}
}
private:
func_type m_funcToCall;
};

כמובן, זה לא יעבוד, כתבתי בעיקר את הממשק ולא הגדרתי מה סוג הפונקציה, וכו'.

אם אתה עובד ב-C++, הדבר היפה יותר יהיה להגדיר בתוך המחלקה הזאת, מחלקה שיש לה פונקציה שאותה אתה רוצה להריץ, ולקבל רפרנס (או מצביע) לאובייקט מאותה מחלקה.

אז ניתן לרשת מהמחלקה ולממש את מה שאתה רוצה לעשות, כולל שמירת מצב בקלות - ולהעביר את האובייקט שלך לאובייקט שמנהל את הזמנים. זאת הדרך היפה לעשות את זה, אבל זה אוברקיל אם אתה רוצה משהו ממש פשוט.

כמו כן, אני לא זוכר בע"פ את הסינטקס המדוייק של פתיחת ת'רד חדש, אז גם זה בערך, אבל נדמה לי שהרעיון ברור...

פורסם

למיטב זכרוני, ניהול ת'רדים באמצעות ה-windows API הוא די מסובך. כבר יותר פשוט להשתמש בפונקצית API קיימת.

פורסם

ניהול ת'רדים באופן כללי זה מסובך, בפרט ב-Windows. בקשר לצרכים שלו - ה-API מאוד בסיסי ולא צריך לדעת יותר מדי. לדעתי זה יתרום לו יותר, מבחינת הבנה, מה בדיוק קורה, לעשות את זה כמו שהצעתי, בגדול.

ארכיון

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

דיונים חדשים