09-08-2008, 19:51
|
|
|
|
חבר מתאריך: 30.10.01
הודעות: 8,699
|
|
|
אואץ'
זו יכולה להיות בעיה.
לצורך הפשטות אתייחס ל core כאל מעבד (למרות שזה לא לגמרי מדוייק)
כדי להשתמש במספר מעבדים יש צורך לכתוב קוד באופן כזה שינסה לבצע מספר פעולות במקביל.
אם הקוד שלך הוא סידרתי (וזה לא משנה אם הוא מחולק למודולים) כולו יתבצע על מעבד אחד
אם הקוד שלך מחזיר את השליטה למערכת ההפעלה, לצורך פעולת מערכת כלשהי, ייתכן שהוא ימשיך את הביצוע על מעבד אחר כשהשליטה תחזור אליו.
מה עושים?
אני לא יודע אם פורטרן 77 תומכת בשימוש בTreads הידועים גם כ Light Weight Processes או LWP
אם כן, זו האפשרות הטובה ביותר לניצול מערכות dual core (ויותר...)
משום שבעזרת threads תוכל לבצע מספר פעולות במקביל באותו תהליך תוך שיתוף זיכרון ומשאבים נוספים.
אם לא, אתה תמיד יכול לפצל את הקוד שלך למספר תהליכים (fork) המתקשרים ביניהם דרך pipe-ים או socket-ים או אפילו זיכרון משותף.
זה לא קשור לקומפיילר ואפילו לא למערכת ההפעלה. זה עניין של תיכנון הקוד
למיטב ידיעתי, אין דרך פשוטה יותר.
זו יכולה להיות הזדמנות טובה להתקדם לשפת תיכנות מודרנית יותר...
*עריכה*
הערה:
תיכנות מקבילי דורש תיכנון מדוקדק
בעיות שנובעות מעצם העובדה שאינך יודע איזה תהליך מאלו הרצים במקביל יסיים ראשון
קשות מאוד לאיתור ותיקון אם הקוד לא נכתב נכון מלכתחילה (חפש Race Condition)
מצד שני ריבוי נעילות ובדיקות יכול לפגום במקביליות ולפגוע בביצועי המערכת.
*עריכה עד כאן*
_____________________________________
_________________________________________________
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה
נערך לאחרונה ע"י המממ בתאריך 09-08-2008 בשעה 19:57.
|