شرایط مسابقه زمانی رخ میدهد که یک نرمافزار برنامه (Program) برای عملکرد صحیح به زمانبندی یک یا چند روند (Process) بستگی دارد. اگر یک نخ (Thread) در زمان غیرمنتظره ای اجرا یا تمام شود، ممکن است باعث رفتار غیرقابل پیش بینی شود، مانند خروجی نادرست یا برنامه بن بست (Deadlock).
اکثر برنامه های نرم افزاری چند رشته ای (Multithreading) هستند. x>، به این معنی که آنها می توانند چندین رشته را همزمان پردازش کنند. یک برنامه کاربردی (Application) خوب برنامه ریزی شده تضمین می کند که نتایج هر رشته به ترتیب مورد انتظار پردازش می شود. اگر یک برنامه به رشتههایی متکی باشد که در یک دنباله غیرقابل پیشبینی اجرا میشوند، ممکن است یک شرط مسابقه رخ دهد.
یک مثال ساده یک دروازه منطق (Logic Gate) است که مقادیر بولی (Boolean) را کنترل میکند. گیت منطقی AND دارای دو ورودی (Input) و یک خروجی (Output) است. اگر ورودی های A و B درست باشند، گیت AND TRUE را تولید می کند. اگر یک یا هر دو ورودی نادرست باشد، FALSE تولید می کند. اگر یک برنامه قبل از بارگیری متغیرهای A و B، نتیجه گیت منطقی را بررسی کند، ممکن است شرایط مسابقه رخ دهد. فرآیند صحیح این خواهد بود:
یک دنباله نادرست خواهد بود:
نتیجه مثال دوم بالا ممکن است مانند مثال اول باشد یا نباشد. برای مثال، متغیر B ممکن است قبل و بعد از بارگذاری FALSE باشد، که نتیجه را تغییر نمیدهد. اگر A FALSE باشد، درست یا نادرست بودن B مهم نیست. با این حال، اگر هر دو A و B درست باشند، نتیجه باید TRUE باشد. بارگیری متغیر B پس از بررسی نتیجه گیت منطقی، نتیجه نادرستی FALSE ایجاد می کند.
خروجی ناسازگار تولید شده توسط شرایط مسابقه ممکن است باعث حشره (Bug) شود که تشخیص آن دشوار است. برنامه نویسان می توانند با اطمینان از پردازش رشته ها در یک توالی ثابت از این مشکلات جلوگیری کنند.
تعریف شرایط مسابقه (Race Condition) در این صفحه یک تعریف پایه نگاشته شده توسط تک بورد است. اگر مایل به ارجاع به این صفحه یا استناد به این تعریف هستید، با شرط درج لینک به این صفحه می توانید از این محتوا استفاده کنید.
هدف تک بورد توضیح اصطلاحات کامپیوتری به روشی است که به راحتی قابل درک باشد. ما برای سادگی و دقت با هر تعریفی که منتشر می کنیم تلاش می کنیم. اگر بازخوردی درباره تعریف شرایط مسابقه (Race Condition) دارید یا میخواهید یک اصطلاح فنی جدید پیشنهاد کنید، لطفاً با ما تماس بگیرید.
آیا می خواهید اصطلاحات فنی بیشتری یاد بگیرید؟ در خبرنامه روزانه یا هفتگی مشترک شوید و شرایط و آزمون های ویژه را در ایمیل خود تحویل بگیرید.