
20-06-2009, 15:49
|
|
|
|
חבר מתאריך: 30.07.05
הודעות: 949
|
|
|
בעיה מוזרה עם thread-ים ב-++C (תחת windows)
היי,
בתוכנית שלי יש thread שמבצע עבודה, ואני צריך לחכות שזו תסתיים לפני שאני ממשיך לבצע מספר פעולות נוספות.
כמו כן, יש לי גם GUI וכדי שהוא לא יקפא בזמן שאני מחכה שהעבודה תסתיים אני משתמש ב-thread מקשר.
עכשיו, בעצם מה שקורה, הוא שה-GUI יכול לעצור את ה-thread המבצע, זה שעובד, וזו בכלל הדרך היחידה לעצור אותו כי הוא בלולאה אין סופית של קבלת ושליחת הודעות. בלחיצה על כפתור stop אני פשוט עושה לו TerminateThread ואז השליטה אמורה לעבור ל-thread שמחכה לו עם WaitForSingleObject במצב INFINITE.
יש לי 2 משתני HANDLE בשבילם - trd_cont שזה ה-thread העובד, ו-wrapper_trd שזה ה-thread המחכה.
הדבר המוזר הוא ששני ה-HANDLE-ים מקבלים מהפונקציה _beginthreadex את אותו ה-HANDLE!!!
רק ה-tid שונה, ואילו הפונקציה TerminateThread עובדת על HANDLE מה שיוצר דברים מאד מוזרים!
למה הוא נותן ל-2 thread-ים את אותו ה-HANDLE?! יש לי דרך לשנות את זה?
תודה!
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.
נערך לאחרונה ע"י Dark Knight בתאריך 20-06-2009 בשעה 15:55.
|