לדלג לתוכן

תרגול מבנים ללא נעילה וחיי צמתים

נתחו את התור מן ההרצאה עבור גודל מערך ארבע. כתבו רצף של push ו־pop שממלא את התור, מרוקן אותו ומסובב את שני המיקומים מעבר לסוף המערך. הסבירו מדוע הקיבולת היא שלושה ולא ארבעה.

ציירו שתי שרשראות happens-before: פרסום ערך חדש, והיתר לשימוש חוזר בתא שנקרא. לכל load ו־store כתבו איזה מידע הוא מגן עליו.

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

לבסוף כתבו תרחיש ABA עם שלושה nodes, והסבירו מדוע atomic pointer אינו מונע קריאת next מתוך node משוחרר. השוו שתי מדיניות reclamation מבחינת קורא שנתקע, תקציב זיכרון וסיום מערכת. אין צורך לממש מחסנית lock-free לא מוכחת.