پاسخ تمرینات Starvation و Livelock در برنامه‌نویسی همروند

Please login to bookmark Close

پاسخ تمرین ۱

Starvation وقتی اتفاق می‌افتد که یک ترد هیچ‌وقت قفل یا منبعی را که لازم دارد به دست نمی‌آورد، چون تردهای دیگر همیشه زودتر از او آن منبع را می‌گیرند. برخلاف Deadlock، تمام برنامه متوقف نمی‌شود و بقیه‌ی تردها به خوبی کار می‌کنند؛ فقط یک یا چند ترد بدشانس هرگز نوبتشان نمی‌رسد.

پاسخ تمرین ۲

کارگرهای پرطمع پشت سر هم و با فاصله‌ی کم قفل را می‌گیرند، در حالی که کارگر بدشانس هر بار که می‌خواهد قفل را بگیرد، یکی از تردهای دیگر زودتر رسیده است. در برنامه‌های واقعی، این الگو معمولا ناشی از زمان‌بندی نامناسب، اولویت‌دهی اشتباه بین تردها، یا ترتیب ثابت و قابل پیش‌بینی در گرفتن قفل‌هاست.

پاسخ تمرین ۳

Livelock شبیه Deadlock است اما با یک تفاوت مهم: تردها مسدود نیستند و دائما مشفول هستند، اما این فعالیت هیچ پیشرفتی در نتیجه ایجاد نمی‌کند. در داستان راهرو، دو نفر هر دو برای رد شدن دیگری به یک طرف کنار می‌روند، می‌بینند راه هنوز بسته است، هر دو به طرف دیگر کنار می‌روند، و این کار تا ابد تکرار می‌شود — هیچ‌کدام واقعا از کنار دیگری رد نمی‌شود.

پاسخ تمرین ۴

در Deadlock، تردها مسدود می‌مانند و هیچ کاری انجام نمی‌دهند. در Livelock، تردها فعال می‌مانند، کد اجرا می‌کنند و حتی منابع واحد پردازنده را هم مصرف می‌کنند، اما هرگز به نتیجه‌ی مفیدی نمی‌رسند. تشخیص Deadlock معمولا ساده‌تر است چون برنامه کاملا می‌ایسد، اما تشخیص Livelock سخت‌تر است چون برنامه به نظر می‌رسد همچنان در حال کار کردن است.

Please login to bookmark Close
نظرات

دیدگاهتان را بنویسید

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم