Erlang – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Jona1357 (שיחה | תרומות)
הרחבה
שורה 127:
* כישלון תהליך מדווח כהודעה.
 
=== Supervisor Trees ( עצי פיקוח ) ===
{{קצרמר|תוכנה}}
ביישום טיפוסי ב-Erlang תהליכים מנוהלים בצורה של [[עץ בינארי|עץ]] פיקוח. ארכיטקטורה זו מבוססת על ההיררכיה של תהליכים, כאשר התהליך בעל המעמד הגבוה נקרא '''supervisor''' והוא אחראי על פיקוח וניהול של תהליכים שבחסותו ( '''Child Proccesses''' ) . גם תהליך אשר נמצא בפיקוח על ידי תהליך אחר בעל מעמד גבוה יותר בהיררכיה, יכול לפקח על תהליכים משלו, וכך נוצרת היררכיה בעלת תהליכים רבים אשר מפקחים ומפוקחים. על העץ המפקח בין היתר נדרש לטפל במקרי קצה של התהליכים שבחסותו - כגון קריסה שלהם. במקרה של קריסה של אחד מהם יקבל העץ המפקח הודעה המכילה tuple שאיברו הראשון יהיה הערך מסוג הנתונים '''Atom''' ( אטום ) <code>'DOWN'</code>.
 
העץ המפקח אחראי להקשיב להודעות כאלו, ולאחר מכן גם לנקוט בפעולה המתאימה בהתאם לתוכן העבודה. {{קצרמר|תוכנה}}
 
== מימוש ==
המימוש הרשמי של Erlang משתמש ב-BEAM - המכונה הוירטואלית של Erlang.
 
BEAM כלולה בהפצה הרשמית של Erlang, שנקראת Erlang/OTP. היא מריצה [[bytecode]] אשר מומר בזמן ריצה ל-threaded code [[:en:Threaded_code|( אנ׳ )]]. בנוסף המימוש הרשמי מכיל מהדר אשר נוצר על ידי HiPE ( ראשי תיבות ל- Performance Erlang Project ) באוניברסיטת אופסלה בשוודיה, וגם מפרש אשר ממיר ישירות מקוד מקור באמצעות עץ נתונים -abstract syntax tree. מאז אוקטובר 2001, המהדר נמצא באינטגרציה מלאה עם המימוש Erlang/OTP.
 
== ראו גם ==