رفتن به محتوا
ماژول 7

همروندی (Concurrency)

نوشتن کد ++C چندنخی صحیح و کارآمد — نخ‌ها، هم‌زمان‌سازی، عملیات اتمیک و الگوریتم‌های موازی.

نخ‌ها و هم‌زمان‌سازی

  1. std::thread، std::jthread و مدیریت نخ‌ها

    ایجاد و مدیریت نخ‌ها با std::thread و std::jthread در ‎C++‎20 را بیاموزید. مفاهیم join در مقابل detach، لغو مشارکتی با stop token‌ها، ذخیره‌سازی محلی نخ و مدیریت استثناها در مرزهای نخ‌ها را درک کنید.

  2. قفل‌های متقابل (Mutex)، قفل‌ها و ناحیه‌های بحرانی

    بر ابزارهای هم‌زمان‌سازی تسلط پیدا کنید: mutex، lock_guard، unique_lock، scoped_lock، shared_mutex. محافظت از داده‌های مشترک، جلوگیری از بن‌بست (deadlock) و تفاوت بین مسابقه داده و شرایط رقابتی (race condition) را بیاموزید.

  3. متغیرهای شرطی و تولیدکننده-مصرف‌کننده

    از متغیرهای شرطی (condition variable) برای هماهنگ‌سازی کارآمد نخ‌ها استفاده کنید. یک صف تولیدکننده-مصرف‌کننده امن از نظر نخ بسازید، بیدارشدن‌های جعلی را مدیریت کنید و از مشکل بیدارشدن گمشده جلوگیری کنید.

Async، اتمیک‌ها و موازی‌سازی

  1. std::async، std::future و std::promise

    از انتزاع‌های سطح بالاتر همروندی استفاده کنید: وظایف ناهمگام را با std::async اجرا کنید، نتایج را با std::future دریافت کنید و مقادیر یا استثناها را به‌صورت دستی با std::promise تنظیم کنید.

  2. عملیات اتمیک و ترتیب حافظه

    برنامه‌نویسی بدون قفل با std::atomic را درک کنید. بر ترتیب‌های حافظه (relaxed، acquire، release، seq_cst) تسلط یابید، یک spinlock با atomic_flag پیاده‌سازی کنید و الگوی مقایسه-و-جایگزینی (CAS) را بیاموزید.

  3. الگوریتم‌های موازی و سیاست‌های اجرا

    از STL موازی ‎C++‎17 برای موازی‌سازی مرتب‌سازی، تبدیل و کاهش با سیاست‌های اجرا بهره ببرید. درک کنید چه زمانی موازی‌سازی کمک می‌کند، قانون Amdahl و طراحی عملی استخر نخ.