עמוד:145

הם יתייחסו לאותו ערך של מונה המבקרים . לדוגמה , אם הערך של מונה המבקרים היה עד לכניסתם , 100 אז בעבור כל אחד מהם השרת מחשב 100 + 1 ושומר את התוצאה במונה המבקרים . לאחר כניסתם יעודכן המונה לערך , 101 אף-על -פי שמספר המבקרים הוא . 104 בעיה זו נקראת בעיית התנגשות , והיא מתרחשת כאשר מספר תהליכים פונים למשאב משותף . בדוגמה שלנו : המונה הוא המשאב המשותף . במקרה זה , כמה משתמשים עלולים לעדכן בו-זמנית את . Application ] "siteCounter" [ כדי לפתור את בעיית ההתנגשות נצטרך לדאוג שכל משתמש יעדכן את הApplication- בזמן אחר . לשם כך , נשתמש בפעולה Application . Lock שמאפשרת רק למשתמש אחד לגשת לעצם Application ושחוסמת את הגישה של שאר המשתמשים לעצם הזה . למעשה , העצם נעול ואף משתמש אינו יכול לראות את ערכו ולשנותו . עתה אפשר לבצע עדכון ללא חשש מהתנגשות . בסיום העדכון , יש לשחרר את החסימה באמצעות הפעולה , Application . UnLock ובכך לאפשר למשתמש אחר לגשת לאותו עצם , לחסום אותו ולעדכנו . הפעולות Application . UnLock ו Application . Lock- מאפשרות עדכון משאבים משותפים בצורה מסודרת וללא התנגשויות . נשתמש בפעולות אלה ונעדכן את הקוד לעדכון מונה המבקרים של האתר כך שלא יתרחשו התנגשויות בגישה למשאב המשותף : Application ] "siteCounter" [ – if ( Session ] "user" [ ! = null && ( bool ) Session ] "user" [ == false ) { public void Page–Load () אם עדיין לא הוגדר משתנה משתמש { // הגדר משתנה משתמש בעל ערך אמת Session ] "user" [ = true ; // נעל עצם Application . Lock (); // הגדל ערך מונה המבקרים Application ] "siteCounter" [ = ( int ) Application ] "siteCounter" [ + 1 ; // שחרר את העצם הנעול } Application . UnLock (); // {

מטח : המרכז לטכנולוגיה חינוכית


לצפייה מיטבית ורציפה בכותר