פעולה חוסמת

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

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

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

הימנעות מחסימה[עריכת קוד מקור | עריכה]

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

דוגמה למצב כזה נוכל לראות במימוש תוכנת צ'אט בסיסית שמאפשרת כתיבה וקריאה. כדי לקרוא מידע נכנס נבצע האזנה לשקע (Socket). האזנה לשקע היא פעולה חוסמת שלא חוזרת עד שמתקבל בשקע מידע. כלומר אם נבחר להמתין להודעה נכנסת, לא נוכל לשלוח הודעה משלנו עד שתתקבל אצלנו הודעה. כדי לאפשר צ'אט אינטראקטיבי יותר, שמאפשר שליחת טקסט וקבלת טקסט כל הזמן ולא רק בתורות, נפצל את התהליך לתהליכון קורא ותהליכון כותב.

ראו גם[עריכת קוד מקור | עריכה]