עבור לתוכן

פונקציית delay רק בקומפיילר דוס?

Featured Replies

פורסם

מדוע הפונקצייה delay בשפת C עובדת לי רק בקומפיילרים של דוס?

האם יש פקודה מקבילה לקומפיילרים של ווינדוס?

בתודה מראש

פורסם

delay משהה את כל ה- process.

ב- windows יש לך את sleep במקום שמשהה רק את ה- thread הנוכחי.

פורסם
  • מחבר

ב- windows יש לך את sleep במקום שמשהה רק את ה- thread הנוכחי.

היא משהה מה?

פורסם

thread - "פתיל" - "תהליך משנה" - "execution context"

זה לא משנה לך הרבה, אתה יכול להשתמש ב- sleep וזהו, אבל אם זה מעניין אותך תמשיך לקרוא.

בסביבת עבודה שתומכת בזה (היום זה למעשה הכל חוץ מדוס "אמיתי") לתוכנית יכולים להיות מספר threads, כלומר תת-תהליכים שלא בהכרח מפריעים אחד לשני. למשל thread אחד יכול לכתוב לדיסק בזמן ש- thread שני מעדכן את המסך, או ששני theads ניגשים לאינטרנט למקומות שונים ומביאים קבצים שונים.

למעשה אתה יכול להסכל על זה כאילו יש כמה פונקציות שפועלות במקביל.

קיצר, sleep משהה רק את ה- thead שקרא לה, ושאר ה- threads יוכלו להמשיך לרוץ.

פורסם
  • מחבר

אוקי אבל עכשיו שוב רק בקומפיילרים של דוס ה-sleep רצה לי...

מה אפשר לעשות?

בתודה מראש

פורסם

אתה יכול להוסיף אצלך באחד מקבצי ה- h

#ifndef _WINDOWS
#define sleep(x) delay(x)
#endif

בשביל backward compatibility.

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

ארכיון

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

דיונים חדשים