פורסם 2006 באוגוסט 719 שנים אני מנסה להריץ ב C++ שני thread ים במקביל שקוראים לאותן פונקציות.כדי למנוע פנייה בו זמנית השתמשתי ב critical section אבל בגלל זה נוצר הפרש זמנים שהורס לי משהו בתוכנית.יש אולי דרך יותר טובה שלא תפגע לי בזמן?אולי דרך שממש תשכפל את הפונקצייה שנקראת?
פורסם 2006 באוגוסט 719 שנים שני threadים יכולים לקרוא לאותה פונקציה באותו הזמן בלי בעיה.הבעיה מתחילה כששני threadים מנסים לגשת לאותו משאב ביחד (לדוגמה הזכרון).דאג לצמצם את כמות הקוד הקריטית בתכנית. אם הם משתמשים בזכרון משותף, העתק אותו בתחילת הפונקציה למשתנים מקומיים ותעבוד עליו, ואח"כ תעתיק אותו בחזרה אם צריך.(אגב, אין בעיה ששני ה-threadים יקראו מאותו הזכרון בו זמנית, הבעיה מתחילה כשאחד מהם מנסה לכתוב).
פורסם 2006 באוגוסט 1719 שנים מחבר תודה, אבל חבל שאין איזה פקודה שאוטומטית משכפלת resources כשמשתמשים בthreadלדוגמא אם כתבתי משהו כבר בעבר ואני לא מעוניין לשנות את הקודאו במקרה גרוע יותר שהקוד הוא קופסא שחורה מבחינתי ואני לא יודע בדיוק במה הוא ישתמש...
פורסם 2006 באוגוסט 1819 שנים בעיקרון אם אתה לא יודע מראש שהקוד הוא thread-safe (אם נניח הוא קופסה שחורה ואתה לא מתעסק עם מה שיש בפנים) אז לא כדאי לך לנסות להריץ אותו ב-thread-ים נפרדים (אלא אם תדאג שלא יהיו שני threadים שנכנסים לתוכו יחד).חוץ מזה, מה זה פקודה אוטומטית? אתה יכול לכתוב בעצמך חבילה שתעשה את זה...חוץ מזה, יש מקרים שבהם תעדיף להשתמש ב-processים מאשר ב-threadים (ל-processים אין משאבים משותפים, בניגוד ל-threadים).
פורסם 2006 באוגוסט 1819 שנים גם אם תדאג ששני thread-ים לא יכנסו לקוד הלא ידוע בו זמנית (לדוגמא ע"י mutex) זה לא מספיק אם הקוד לא reentrant, אם הוא שומר מצב פנימי במקום שאין לך גישה אליו.באופן כללי קוד שהוא קופסה שחורה ושלא ידוע שהוא thread-safe צריך להתייחס אליו בחשדנות רבה בהקשר זה.
פורסם 2006 באוגוסט 2219 שנים אם תאמר מה ואיך בדיוק נדפק לך (ומה אתה מנסה לעשות), אולי נוכל לעזור לך יותר ביעילות.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.