From Wikipedia, the free encyclopedia
یک وضعیت رقابتی[1] (به انگلیسی: Race Condition) یا Race Hazard یک نقص در سیستم الکترونیکی یا رایانهای است که به موجب آن نتیجهٔ خروجی And یا Or بهطور غیرمنتظرهای به زمانبندی و ترتیب رویدادهای دیگر بستگی دارد. این اصطلاح در اصل به حالتی گفته میشود که دو سیگنال با هم رقابت میکنند تا هر یک زودتر به خروجی تأثیر بگذارند.
به عنوان مثال، یک دروازه And با دو ورودی که در یک ورودی با سیگنال A و در ورودی دیگر با سیگنال Á تغذیه میشود. در این تئوری خروجی هیچ وقت نباید یک شود. هر چند که، اگر تغییر در مقدار A از مقدار انتشار به ورودی دوم بیشتر طول بکشد، هنگامی که مقدار A از صفر به یک تغییر پیدا کند، در یک زمان کوتاه، هر دو ورودی در حالت یک قرار میگیرد و همچنین خروجی دروازه نیز مقدار یک میشود.
وضعیت رقابتی در نرمافزار هنگامی ناشی میشود که پردازشهای مختلفی به یک وضع مشترک بستگی داشته باشد. به عنوان مثال بگذارید دو رشته T۱ و T۲ را فرض کنیم. هر کدام مقدار سراسری i را میخواهند یک واحد اضافه کنند. بهطور ایدهآل، مجموعه دستورهای زیر باید انجام شود:
در حالت بالا همانطور که انتظار میرفت مقدار i مساوی ۲ است، با اینکه، اگر دو رشته بهطور همزمان و بدون قفل کردن داده و همگامسازی اجرا شوند، خروجی دستور باید اشتباه شود که مجموعه دستورهای دیگر زیر این سناریو را نشان میدهد:
مقدار نهایی i مساوی یک شدهاست به جای اینکه انتظار میرفت مساوی ۲ شود.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.