همروندی (Concurrency)
نوشتن کد ++C چندنخی صحیح و کارآمد — نخها، همزمانسازی، عملیات اتمیک و الگوریتمهای موازی.
نخها و همزمانسازی
std::thread، std::jthread و مدیریت نخها
ایجاد و مدیریت نخها با std::thread و std::jthread در C++20 را بیاموزید. مفاهیم join در مقابل detach، لغو مشارکتی با stop tokenها، ذخیرهسازی محلی نخ و مدیریت استثناها در مرزهای نخها را درک کنید.
قفلهای متقابل (Mutex)، قفلها و ناحیههای بحرانی
بر ابزارهای همزمانسازی تسلط پیدا کنید: mutex، lock_guard، unique_lock، scoped_lock، shared_mutex. محافظت از دادههای مشترک، جلوگیری از بنبست (deadlock) و تفاوت بین مسابقه داده و شرایط رقابتی (race condition) را بیاموزید.
متغیرهای شرطی و تولیدکننده-مصرفکننده
از متغیرهای شرطی (condition variable) برای هماهنگسازی کارآمد نخها استفاده کنید. یک صف تولیدکننده-مصرفکننده امن از نظر نخ بسازید، بیدارشدنهای جعلی را مدیریت کنید و از مشکل بیدارشدن گمشده جلوگیری کنید.
Async، اتمیکها و موازیسازی
std::async، std::future و std::promise
از انتزاعهای سطح بالاتر همروندی استفاده کنید: وظایف ناهمگام را با std::async اجرا کنید، نتایج را با std::future دریافت کنید و مقادیر یا استثناها را بهصورت دستی با std::promise تنظیم کنید.
عملیات اتمیک و ترتیب حافظه
برنامهنویسی بدون قفل با std::atomic را درک کنید. بر ترتیبهای حافظه (relaxed، acquire، release، seq_cst) تسلط یابید، یک spinlock با atomic_flag پیادهسازی کنید و الگوی مقایسه-و-جایگزینی (CAS) را بیاموزید.
الگوریتمهای موازی و سیاستهای اجرا
از STL موازی C++17 برای موازیسازی مرتبسازی، تبدیل و کاهش با سیاستهای اجرا بهره ببرید. درک کنید چه زمانی موازیسازی کمک میکند، قانون Amdahl و طراحی عملی استخر نخ.