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