שאלה ב- multi threading

שאלה ב- multi threading

קיים פרוסס (נכתב ב- C++) שפותח כמה threads.
כל threads מייצר אובייקט com dll+ (שכתוב ב- .NET)
באובייקט מוגדרים משתנים גלובלים (תחת מודול).
השאלות:
1) האם במקרה זה הזיכרון של האובייקטים שיוצרו הוא משותף? כלומר האם יש צורך להגן המשתנים?
2) האם הגנה על משתנים כאלה ו/או הגנה על תהליכים מסויימים (למשל תהליכים שבהם יש עבודה מול DB) אמורה להיעשות דרך mutex או critical section כלומר האם בין פרוססים או בתוך פרוסס (לדעתי critical section אבל אינני בטוחה ב- 100%)

תודה מראש
 

nocgod

New member
באותו פרוסס הזיכרון משותף

וחייב mutex על מקומות קריטיים
פרוססים נפרדים אלא אם כן הגדרת זיכרון משותף אין להם זיכרון משותף. ככה לפחות למדתי :)
 

פרסאוס

New member
תשובות

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

הספציפי שלי.

את התיאוריה מתי mutex או critical section אני מכירה
 
למעלה