تمرینات Race Condition در پایتون

Please login to bookmark Close

این تمرین‌ها بر پایه‌ی درس شرایط رقابتی (Race Condition) هستند.

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

Race Condition دقیقاً در چه شرایطی رخ می‌دهد؟ با اشاره به مثال شمارنده‌ی مشترک (counter) و سه گامِ «خواندن، تغییر، نوشتن»، توضیح دهید چرا مقدار نهایی با مقدار موردانتظار (صفر) متفاوت می‌شود.

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

در مثال دو آشپز و یک دیگ، چرا وجود دو آشپز به‌خودی‌خود بد نیست، اما نتیجه‌ی کار (آش) ممکن است خراب شود؟ نقش سرآشپز با چه مفهومی در برنامه‌نویسی هماهنگ است؟

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

کدی که هیچ مشکل Race Condition ندارد چه نامیده می‌شود؟

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

وقتی یک منبع اشتراکی توسط یک ترد قفل (lock) شده و هنوز release نشده، تردهای دیگر باید چه کاری انجام دهند؟

تمرین ۵ (کد)

یک سناریوی «فروش بیش از ظرفیت» بنویسید: فقط ۱ بلیت موجود است و ۵ خریدار هم‌زمان تلاش می‌کنند بخرند. ابتدا نسخه‌ی معیوب (بدون قفل) که ممکن است بیش از ۱ بلیت بفروشد را بنویسید، سپس نسخه‌ی درست با Lock.

تمرین ۶ (کد)

یک حساب بانکی با موجودی ۱۰۰ و دو برداشت هم‌زمان ۸۰ واحدی را در نظر بگیرید. با Lock کاری کنید که فقط یکی از برداشت‌ها انجام شود و موجودی هرگز منفی نشود.

تمرین ۷ (کد)

نشان دهید که در ThreadPoolExecutor هم Race Condition ممکن است رخ دهد و چطور با threading.Lock آن را برطرف می‌کنید. (چند کارِ submit‌شده روی یک منبع مشترک کار کنند.)

Please login to bookmark Close
نظرات

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

فهرست مطالب

سرفصل دوره

تمرین

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

پاسخ تمرین ها

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

اشتراک گذاری

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

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

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

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

تنظیمات

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