תרגול 7 חוטים Flashcards
מה הscheduler
מזמן
תהליכים או חוטים
חוטים
מה משותף בין חוטים
ומה לא
משותף מרחב זכרון
גישה לקבצים והתקני חומרה
לא משותף
רגיסטרים
ומחסנית
למה יצירת חוט יותר זול מייצירת תהליך
כי לא דורש העתקה של משאבים מסוימים כמו
טבלת הדפים
וטבלת קבצים פתוחים
מתי לא כדאי לעבוד עם חוטים
אם אנחנו במערכת עם מעבד יחיד ורוצים להריץ תהליך חישובי יכולים לסבול מתוקרה מיותרת להחלפת הקשר
תוכנית קטנה ופשוטה יכולה לסבול מתקורה מיותרת של יצירת חוט
האם יותר חוטים לתהליך יתן לו יותר זמן מעבד
לא
החתיכה שלו תתחלק בין החוטים שלו
מה צריך להגיד בקוד בשביל להשתמש בחוטים
לייבא את
<pthreads.h>
בתהליך הקימפול
Gcc ... -pthreads ....
שמוסיף את הmacros הנחוצים ומקשר עם הספריה שצריל
</pthreads.h>
איך מייצרים קוד חדש
מה מקבל מה מחזיר
פונק
pthread_create
מקבל מצביע לשמירת מזהה החוט
Arrt - הגדרות של החוט כמו אם גרעין או לא
בדך כלל נשלח null
מצביע לפונק להרצה
פרמטר להעביר לפונק
מחזיר 0 בהצלחה אחרת קוד שגיאה
עד מתי חוט ירוץ יעל מה ירוץ
ירוץ על פונק שניתן לו
יסיים כשייסים את ריצת הפונ
או עד שיריץ
Pthread_exit
עם ערך סיום
או עד שיקבל
Pthread_cancel
Pthread_self()
מה זה
חוט מריץ את זה
ומקבל מזהה של עצמו
מזהה פנימי של pthreads זה לא מהזהה של החוט
Pthread_cancel
מקבל?עושה?מחזיר?
מה יהיה ערך סיום של חוט שעשו עליו את זה
מקבל מזהה חוט מסוג pthread_t
שולח לחוט סיגנל ייחודי
Pthread_canceled ערך סיום
Pthread_join()
מה מקבל
מי יכול להריץ
מקבל מזהה חוט לחכות לסיומו
ומצביע לשמירת ערך סיום שלו
כל חוט יכול להמתין לכל חוט
גורם לשחרור מידע הניהול ברמתpthread וגם ברמת הגרעין
מתי תהליך עם חוטים מסיים את ריצתו
כשכל החוטים שלו סיימו
פעולה לא חוקית באחד החוטים
קריאה לexit מאחד החוטים
חזרה מmain בחוט הראשי
מה יכול אם החוט הראשי רוצה לצאת אבל לא רוצה שכל התהליך יסתיים מה יעשה
Pthread_exit()
לאיזה תהליכים יש חוט ראשי
לכל התהליכים אפילו אם לא יצרו חוט יהיה ראשי
נוצר בקריאה לFORK
איזה קריאת מערכת מייצרת חוט חדש
clone()