تمرینات Dead Lock در پایتون

Please login to bookmark Close

این تمرین‌ها بر پایه‌ی درس مشکل Deadlock در پایتون هستند.

تمرین ۱ (مفهومی)

Dead Lock چیست و در مثال سرویس بهداشتی، چرا با اینکه منبع اشتراکی (سرویس بهداشتی) آزاد بود، افراد منتظر ماندند؟

تمرین ۲ (مفهومی)

در سناریوی اول (قفل‌کردن دوباره‌ی یک قفل)، چرا فراخوانی یک تابع از داخل تابع دیگری که قبلاً همان قفل را گرفته، باعث Dead Lock می‌شود؟ دو راه‌حل پیشنهاد دهید.

تمرین ۳ (کد)

یک تابع بنویسید که قفلی بگیرد و تابع دیگری را صدا بزند که می‌خواهد همان قفل را دوباره بگیرد (که به بن‌بست منجر می‌شود). سپس با استفاده از RLock آن را اصلاح کنید.

تمرین ۴ (مفهومی)

در سناریوی دوم (ترتیب اشتباه قفل‌ها)، چرا وقتی دو ترد قفل‌ها را با ترتیب معکوس بگیرند برنامه در Dead Lock گیر می‌کند؟ برای جلوگیری چه باید کرد؟

تمرین ۵ (کد)

یک تابع transfer(src, dst, amount) بنویسید که بین دو حساب پول جابه‌جا می‌کند و هر حساب قفل خودش را دارد. کاری کنید که حتی اگر دو انتقال معکوس (A→B و B→A) هم‌زمان اجرا شوند، بن‌بست رخ ندهد.

تمرین ۶ (مفهومی)

در سناریوی سوم (مدیریت خطای اشتباه)، فراموش‌کردن مدیریت یک نوع خطا چطور می‌تواند باعث Dead Lock شود؟ بهترین راه جلوگیری کدام است؟

تمرین ۷ (کد)

کدی بنویسید که در آن به‌خاطر یک خطای مدیریت‌نشده، قفل هرگز آزاد نمی‌شود. سپس آن را با with lock اصلاح کنید و توضیح دهید چرا with امن‌تر است.

Please login to bookmark Close
نظرات

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

فهرست مطالب

سرفصل دوره

تمرین

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

پاسخ تمرین ها

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

اشتراک گذاری

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

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

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

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

تنظیمات

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