מרוץ תהליכים

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

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

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

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

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