تالار گفتمان مانشت
بهترین ایده برای نشان دادن ناحیه بحرانی - نسخه‌ی قابل چاپ

بهترین ایده برای نشان دادن ناحیه بحرانی - irpersian20 - 26 فروردین ۱۳۹۲ ۱۱:۰۶ ب.ظ

سلام
من با سی شارپ یا جاوا فرق نداره الگوریتم پیترسون رو پیاده سازی کردم.فقط با دستور خروجی بهم میگه کدام ترد در ناحیه بحرانی است.
الان ایده میخوام.
۲ تابع تولید کننده و مصرف کننده خیلی خوب و دقیق میخوام . که واقعا بهم نشون بده که دسترسی به ناحیه های بحرانی به چه صورت هست.
واسه تابع تولید کننده و مصرف کننده دوستان تابع خوب و ساده سراغ دارید؟
یک چیزی که بتونیم دقیق بگیم الگوریتم داره کار میکنه چون Trace کردن تردینگ کار اسانی (حداقل برای من) نیست.
ممنونم

بهترین ایده برای نشان دادن ناحیه بحرانی - esi - 30 فروردین ۱۳۹۲ ۰۶:۰۴ ب.ظ

عین توابع تولید کننده مصرف کننده تو کتاب استالینگز هستش که می تونی با یه بافر(صف حلقوی) پیاده سازی کنی.
اگه میخوای مطمئن بشی که الگوریتم درست کار می کنه، شما باید از طریق خصوصیات property اثبات کنید که این الگوریتم شما حتما خصوصیات یک الگوریتم انحصار متقابل ME رو بر آورده می کنه. راه حل ساده است شما باید با قرار دادن دستوراتی در بخش ناحیه بحرانی مثل چاپ نام تردی که داخل ناحیه بحرانی است خاصیت یک الگوریتم متداول انحصار متقابل رو ارضا کنید.
ساده بگم شما باید تو بخش بحرانی خود دستور چاپی بذارید تا دو کار رو انجام بده :
۱-معلوم بشه که در هر لحظه فقط یک ترد تویه ناحیه بحرانی است( اصلاحا خاصیت mutual exclusion)
۲- هر کسی که تقاضای ورود به ناحیه بحرانی است حتما وارد ناحیه بحرانی خواهد شد (اصطلاحا خاصیت starvation freedom)
به صورت رسمی این دو خاصیت رو باید یک الگوریتم انحصار متقابل داشته باشه.
پیاده سازی دقیقشو خودتون می تونید انجام بدید، به نظرم سخت نیست