
04-07-2007, 14:54
|
 |
אדמין לשעבר
|
|
חבר מתאריך: 25.10.01
הודעות: 20,292
|
|
|
אוקיי... בוא ננסה לפתח את זה ביחד.
אין דבר כזה "פקודה גלובאלית", קרי - פקודה שאתה כותב אותה באיזשהו מקום ובאורח פלא היא תעבוד במקביל לאפליקציה שלך.
מה שאתה מחפש, זו בעצם דרך לבצע לוגיקה כלשהי... ובזמן שהיא מתבצעת, במקביל למעשה, לבדוק
משהו נוסף.
יש כמה דרכים לעשות את זה.
כמו שכתבתי, דרך ה"הפרעות" הידועה בשם interrupts/events. באפשרות הזאת, התוכנית שלך רצה
כרגיל - כשברקע, יכולות להתקבל הפרעות שתפסקנה את הריצה של התוכנית שלך, ותבוצענה ורק אז
תוכנית שלך תחזור לפעול.
האפשרות השניה, אפשרות ה"תשאול". התוכנית שלך כל הזמן בודקת האם לעשות משהו אחר..
עכשיו בוא נראה איך שני הדברים האלו מתקשרים:
1. אפשרות התשאול (אותו polling מפורסם) בעצם אומר - התוכנית שלך רצה בצורת לולאה. בכל מעבר בלולאה, אתה מבצע את הפעילות הרגילה של התוכנית (לדוגמא, נקח משחק מחשב בו אתה מזיז דמות.
בלולאה, אתה תזיז את הדמות כל פעם בצעד אחד) ובסוף הלולאה, אתה בודק תנאים מסויימים (בדוגמא
שלנו, לדוגמא - אתה בודק האם המשתמש הקיש על אחד החצים בשביל לשנות את כיוון תנועת הדמות,
או אם הוא לחץ ESC, אתה יוצא מהתוכנית).
2. אפשרות ה"הפרעה" - במצב זה (שקשה יותר למימוש למי שרק מתחיל ללמוד תכנות), בנוסף לתוכנית
שלך רצים עוד שירותים במקביל. השירותים האלו מבצעים את אותו polling מהסעיף הראשון, אלא בצורה
מעט יותר חכמה. ברגע שקורה בשירות המקביל משהו שאתה רוצה לדעת עליו, הריצה הרגילה של
התוכנית שלך מפסיקה ואותו interrupt מקבל את הפוקוס.
כאמור, בשביל תכניתן מתחיל - אני ממליץ לך כרגע לבחור באפשרות הראשונה.
_____________________________________
דורון
|