وضعیت رقابتی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
LetsDoItBot (بحث | مشارکت‌ها)
تمیزکاری، + ویرایش با ماژول ابرابزار با استفاده از AWB
FreshmanBot (بحث | مشارکت‌ها)
جز اصلاح فاصله مجازی + اصلاح نویسه با استفاده از AWB
خط ۱:
[[پرونده:Race_condition.svg|بندانگشتی|(شکل ۱)وضعیت رقابتی در یک مدار منطقی]]
یک '''وضعیت رقابتی'''<ref name="test">[[:en:Race condition|http://en.wikipedia.org/wiki/Race condition]],</ref> به انگلیسی Race Condition یا Race Hazard یک نقص در [[سیستم]] الکترونیکی یا رایانه ایرایانه‌ای است که به موجب آن نتیجه خروجی And یا Or به طور غیرمنتظرهبه‌طور ایغیرمنتظره‌ای به زمانبندی و ترتیب رویدادهای دیگر بستگی دارد. این اصطلاح در اصل به حالتی گفته می‌شود که دو [[سیگنال]] با هم رقابت می‌کنند تا هر یک زودتر به خروجی تأثیر بگذارند.
 
== [[الکترونیک]] ==
خط ۶:
 
== [[رایانه]] ==
وضعیت رقابتی در [[نرم‌افزار]] هنگامی ناشی می‌شود که [[پردازش]]‌های مختلفی به یک وضع مشترک بستگی داشته باشد. به عنوان مثال بگذارید دو رشته T۱ و T۲ را فرض کنیم. هر کدام مقدار سراسری i را می‌خواهند یک واحد اضافه کنند. به طوربه‌طور ایده‌آل، مجموعه دستورهای زیر باید انجام شود:
# integer i=۰ (حافظه)
# T۱ مقدار i را از حافظه خوانده و به Register۱ انتقال می‌دهد.
خط ۱۵:
# T۲ مقدار Register۲ را در حافظه ذخیره می‌کند. i=۲
# i=۲
در حالت بالا همان‌طور که انتظار می‌رفت مقدار i مساوی ۲ است، با اینکه، اگر دو رشته بهبه‌طور طور همزمانهم‌زمان و بدون فقل کردن داده و [[همگام سازی]] اجرا شوند، خروجی دستور باید اشتباه شود که مجموعه دستورهای دیگر زیر این سناریو را نشان می‌دهد:
# integer i=۰ (حافظه)
# T۱ مقدار i را از حافظه خوانده و به Register۱ انتقال می‌دهد.
خط ۲۵:
# i=۱
 
مقدار نهایی i مساوی یک شده استشده‌است به جای اینکه انتظار می‌رفت مساوی ۲ شود.
 
== منابع ==