آموزش همزمانی C++ مدرن در عمق (C++17/20)

Modern C++ Concurrency in Depth ( C++17/20)

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: ویژگی‌های همزمانی مدرن c++ از جمله مدل حافظه، ساختار داده بدون قفل، مخزن‌های رشته، کوروتین‌ها. آموزش برنامه نویسی همزمان در C++ از جمله ویژگی در استانداردهای C++17/20. شما یاد خواهید گرفت که چگونه ساختارهای داده و الگوریتم های مفید همزمان را با استفاده از آخرین ویژگی های C++ پیاده سازی کنید. پیش نیازها: اصول برنامه نویسی c++، کمی دانش در مورد ساختار داده ها و الگوریتم ها مفید خواهد بود.

زبان برنامه نویسی C++ را می توان در موضوعات بسیاری دسته بندی کرد. برخی می گویند این یک زبان برنامه نویسی با هدف عمومی است، برخی می گویند یک نسخه شی گرا از C است. اما من دوست داشتم آن را زیر زبان برنامه نویسی سیستم دسته بندی کنم. یکی از ویژگی های هر زبان برنامه نویسی سیستمی از جمله C++ این است که زبان باید در مقایسه با زبان های دیگر مانند جاوا و غیره سریعتر اجرا شود.

پارادایم C++ با معرفی استانداردهای C++11 تغییر زیادی پیدا کرد. بارزترین تفاوت با نسخه قبلی، معرفی مدل حافظه جدید است. مدل حافظه بخش کلیدی هر زبانی است و عملکرد همه عملکردها به مدل حافظه آن زبان بستگی دارد. با مدل جدید حافظه c++، می‌توانیم از قدرت فوق‌العاده پردازنده‌های چند هسته‌ای مدرن استفاده کنیم.

برنامه نویسی یک کد C++ مناسب با مکانیسم بازیابی حافظه بهتر کار دشواری است. اما اگر بخواهیم کد ایمن رشته را کدنویسی کنیم که بتواند بر روی پردازنده‌ها تاکید کند، کار بسیار مشکل‌تری است. در این دوره ما بحث عمیقی در مورد ویژگی های همزمانی C++ از جمله مدل حافظه خواهیم داشت. ما ساختارها و الگوریتم های داده ایمن رشته را پیاده سازی خواهیم کرد، هم به شیوه ای مبتنی بر قفل و هم به شیوه ای بدون قفل. اجرای صحیح ساختارهای داده و الگوریتم های بدون قفل خروجی عملکرد بی سابقه ای را ارائه می دهد. اجازه دهید جنبه‌های کلیدی را که در این دوره در زیر پوشش می‌دهیم فهرست کنم.

1. مبانی همزمانی C++ (رشته‌ها، mutex، package_task، آینده، همگام‌سازی، وعده)

2. اجرای ایمن ساختارهای داده و الگوریتم‌های مبتنی بر رشته را قفل کنید.

مدل حافظه 3.C++.

4. اجرای رایگان ساختارهای داده و الگوریتم‌ها را قفل کنید.

ویژگی های همزمانی 5.C++20.

5. مکانیسم بازیابی حافظه مناسب برای ساختارهای داده بدون قفل.

6. طراحی جنبه های کد همزمان.

7. بحث عمیق در مورد استخرهای نخ.

8. بخش پاداش در برنامه نویسی CUDA با C و C++.


سرفصل ها و درس ها

راهنمای مدیریت تاپیک Thread management guide

  • تنظیم محیط برای دوره Setting up the environment for the course

  • مقدمه ای بر محاسبات موازی Introduction to parallel computing

  • مسابقه: برنامه نویسی موازی به طور کلی Quiz : Parallel programming in general

  • تمرین برنامه نویسی 2: فروش بی اهمیت یک مدل کشتی Programming exercise 2 : Trivial sale a ship model

  • تمرین برنامه نویسی 3: کشتی با صف های کاری را بادبانی کنید Programming excersice 3 : Sail a ship with work queues

  • موضوع ذخیره سازی محلی Thread local storage

  • اشکال زدایی برنامه در ویژوال استودیو Debugging a application in Visual studio

راهنمای مدیریت تاپیک Thread management guide

  • تنظیم محیط برای دوره Setting up the environment for the course

  • مقدمه ای بر محاسبات موازی Introduction to parallel computing

  • مسابقه: برنامه نویسی موازی به طور کلی Quiz : Parallel programming in general

  • کاربردهای برنامه نویسی موازی Uses of parallel programming.

  • کاربردهای برنامه نویسی موازی Uses of parallel programming.

  • چگونه یک تاپیک راه اندازی کنیم How to launch a thread

  • چگونه یک تاپیک راه اندازی کنیم How to launch a thread

  • تمرین برنامه نویسی 1: راه اندازی رشته ها Programming exercise 1 : Launching the threads

  • تمرین برنامه نویسی 1: راه اندازی رشته ها Programming exercise 1 : Launching the threads

  • قابلیت اتصال رشته ها Joinability of threads

  • قابلیت اتصال رشته ها Joinability of threads

  • پیوستن و جدا کردن توابع Join and detach functions

  • پیوستن و جدا کردن توابع Join and detach functions

  • نحوه رسیدگی به پیوستن، در سناریوهای استثنایی How to handle join, in exception scenarios

  • نحوه رسیدگی به پیوستن، در سناریوهای استثنایی How to handle join, in exception scenarios

  • تمرین برنامه نویسی 2: فروش بی اهمیت یک مدل کشتی Programming exercise 2 : Trivial sale a ship model

  • نحوه انتقال پارامترها به یک رشته How to pass parameters to a thread

  • نحوه انتقال پارامترها به یک رشته How to pass parameters to a thread

  • موقعیت های مشکل ساز ممکن است هنگام انتقال پارامترها به یک نخ ایجاد شود Problematic situations may arise when passing parameters to a thread

  • موقعیت های مشکل ساز ممکن است هنگام انتقال پارامترها به یک نخ ایجاد شود Problematic situations may arise when passing parameters to a thread

  • انتقال مالکیت یک موضوع Transferring ownership of a thread

  • انتقال مالکیت یک موضوع Transferring ownership of a thread

  • برخی از عملیات مفید در موضوع Some useful operations on thread

  • برخی از عملیات مفید در موضوع Some useful operations on thread

  • تمرین برنامه نویسی 3: کشتی با صف های کاری را بادبانی کنید Programming excersice 3 : Sail a ship with work queues

  • انباشت موازی - توضیح الگوریتم Parallel accumulate - algorithm explanation

  • انباشت موازی - توضیح الگوریتم Parallel accumulate - algorithm explanation

  • اجرای الگوریتم انباشته موازی Parallel accumulate algorithm implementation

  • اجرای الگوریتم انباشته موازی Parallel accumulate algorithm implementation

  • موضوع ذخیره سازی محلی Thread local storage

  • اشکال زدایی برنامه در ویژوال استودیو Debugging a application in Visual studio

  • مدیریت موضوع Thread management

  • مدیریت موضوع Thread management

دسترسی ایمن به داده های به اشتراک گذاشته شده و مکانیسم های قفل کردن Thread safe access to shared data and locking mechanisms

  • اجرای پشته ایمن موضوع: پیاده سازی Thread safe stack implementation : implementation

  • اجرای پشته ایمن رشته: شرط مسابقه از رابط به ارث می رسد Thread safe stack implementation : race condition inherit from the interface

  • موتکس و قفل Mutex and locks

دسترسی ایمن به داده های به اشتراک گذاشته شده و مکانیسم های قفل کردن Thread safe access to shared data and locking mechanisms

  • مقدمه ای بر مکانیسم های قفل Introduction to locking mechanisms

  • مقدمه ای بر مکانیسم های قفل Introduction to locking mechanisms

  • مفهوم غیر متغیر Concept of invarient

  • مفهوم غیر متغیر Concept of invarient

  • mutexes mutexes

  • mutexes mutexes

  • مواردی که هنگام استفاده از mutexe باید به خاطر بسپارید Things to remember when using mutexes

  • مواردی که هنگام استفاده از mutexe باید به خاطر بسپارید Things to remember when using mutexes

  • اجرای پشته ایمن موضوع: مقدمه ای بر پشته Thread safe stack implementation : introduction to stack

  • اجرای پشته ایمن موضوع: مقدمه ای بر پشته Thread safe stack implementation : introduction to stack

  • اجرای پشته ایمن موضوع: پیاده سازی Thread safe stack implementation : implementation

  • اجرای پشته ایمن رشته: شرط مسابقه از رابط به ارث می رسد Thread safe stack implementation : race condition inherit from the interface

  • قفل های مرده Dead locks

  • قفل های مرده Dead locks

  • قفل های منحصر به فرد unique locks

  • قفل های منحصر به فرد unique locks

  • موتکس و قفل Mutex and locks

ارتباط بین رشته با استفاده از متغیرهای شرط و آتی Communication between thread using condition variables and futures

  • مقدمه ای بر متغیرهای شرط introduction to condition variables

  • اجرای صف ایمن موضوع: مقدمه ای بر ساختار داده صف Thread safe queue implementation : introduction to queue data structure

  • ارتباط بین رشته ها با استفاده از std::promises Communication between threads using std::promises

ارتباط بین رشته با استفاده از متغیرهای شرط و آتی Communication between thread using condition variables and futures

  • مقدمه ای بر متغیرهای شرط introduction to condition variables

  • جزئیات در مورد متغیرهای شرط Details about condition variables

  • جزئیات در مورد متغیرهای شرط Details about condition variables

  • اجرای صف ایمن موضوع: مقدمه ای بر ساختار داده صف Thread safe queue implementation : introduction to queue data structure

  • اجرای صف امن موضوع: پیاده سازی Thread safe queue implementation : implementation

  • اجرای صف امن موضوع: پیاده سازی Thread safe queue implementation : implementation

  • مقدمه ای بر وظایف آتی و غیر همگام introduction to futures and async tasks

  • مقدمه ای بر وظایف آتی و غیر همگام introduction to futures and async tasks

  • بحث مفصل وظایف async async tasks detailed discussion

  • بحث مفصل وظایف async async tasks detailed discussion

  • اجرای الگوریتم انباشته موازی با کار ناهمگام Parallel accumulate algorithm implementation with async task

  • اجرای الگوریتم انباشته موازی با کار ناهمگام Parallel accumulate algorithm implementation with async task

  • مقدمه ای بر package_task Introduction to package_task

  • مقدمه ای بر package_task Introduction to package_task

  • ارتباط بین رشته ها با استفاده از std::promises Communication between threads using std::promises

  • بازیابی استثنا با استفاده از std::futures Retrieving exception using std::futures

  • بازیابی استثنا با استفاده از std::futures Retrieving exception using std::futures

  • std::shared_futures std::shared_futures

  • std::shared_futures std::shared_futures

ساختارهای داده ایمن و پیاده سازی الگوریتم مبتنی بر رشته Lock based thread safe data structures and algorithm implementation

  • مقدمه ای بر ساختارهای داده ایمن و الگوریتم های رشته ای مبتنی بر قفل introduction to lock based thread safe data structures and algorithms

  • اجرای ساختار داده صف با استفاده از ساختار داده لیست پیوندی queue data structure implementation using linked list data structure

  • معرفی موازی STL Parallel STL introduction

  • پیاده سازی الگوریتم مرتب سازی سریع موازی parallel quick sort algorithm implementation

  • موازی برای هر اجرا parallel for each implementation

  • پیاده سازی الگوریتم یافتن موازی با async parallel find algorithm implementation with async

  • انتقال ماتریس موازی Parallel matrix transpose

  • عوامل موثر بر عملکرد کدهای همزمان Factors affecting the performance of concurrent code

ساختارهای داده ایمن و پیاده سازی الگوریتم مبتنی بر رشته Lock based thread safe data structures and algorithm implementation

  • مقدمه ای بر ساختارهای داده ایمن و الگوریتم های رشته ای مبتنی بر قفل introduction to lock based thread safe data structures and algorithms

  • اجرای ساختار داده صف با استفاده از ساختار داده لیست پیوندی queue data structure implementation using linked list data structure

  • اجرای صف ایمن رشته thread safe queue implementation

  • اجرای صف ایمن رشته thread safe queue implementation

  • معرفی موازی STL Parallel STL introduction

  • پیاده سازی الگوریتم مرتب سازی سریع موازی parallel quick sort algorithm implementation

  • موازی برای هر اجرا parallel for each implementation

  • پیاده سازی الگوریتم یافتن موازی با وظیفه بسته parallel find algorithm implementation with package task

  • پیاده سازی الگوریتم یافتن موازی با وظیفه بسته parallel find algorithm implementation with package task

  • پیاده سازی الگوریتم یافتن موازی با async parallel find algorithm implementation with async

  • معرفی الگوریتم جمع جزئی Partial sum algorithm introduction

  • معرفی الگوریتم جمع جزئی Partial sum algorithm introduction

  • اجرای موازی الگوریتم جمع جزئی Partial sum algorithm parallel implementation

  • اجرای موازی الگوریتم جمع جزئی Partial sum algorithm parallel implementation

  • مقدمه ای بر ماتریکس Introduction to Matrix

  • مقدمه ای بر ماتریکس Introduction to Matrix

  • ضرب ماتریس موازی Parallel Matrix multiplication

  • ضرب ماتریس موازی Parallel Matrix multiplication

  • انتقال ماتریس موازی Parallel matrix transpose

  • عوامل موثر بر عملکرد کدهای همزمان Factors affecting the performance of concurrent code

ویژگی های C++20 Concurrency C++20 Concurrency features

  • Jthread: اجرای نسخه خودمان Jthread : Our own version implementation

  • C++ coroutines: توابع رزومه C++ coroutines : resume functions

  • C++ Coroutines: Generators C++ coroutines : Generators

ویژگی های C++20 Concurrency C++20 Concurrency features

  • Jthread: مقدمه Jthread : Introduction

  • Jthread: مقدمه Jthread : Introduction

  • Jthread: اجرای نسخه خودمان Jthread : Our own version implementation

  • C++ coroutines : مقدمه C++ coroutines : Introduction

  • C++ coroutines : مقدمه C++ coroutines : Introduction

  • C++ coroutines: توابع رزومه C++ coroutines : resume functions

  • C++ Coroutines: Generators C++ coroutines : Generators

  • موانع C++ C++ Barriers

  • موانع C++ C++ Barriers

مدل حافظه C++ و عملیات اتمی C++ memory model and atomic operations

  • نشانگرهای اتمی atomic pointers

  • بحث کلی در مورد انواع اتمی General discussion on atomic types

  • بحث در مورد memory_order_acquire و memory_order_release Discussion on memory_order_acquire and memory_order_release

  • جنبه های مهم memory_order_acquire و memory_order_release Important aspects of memory_order_acquire and memory_order_release

  • بحث در مورد memory_order_consume Discussion on memory_order_consume

  • مفهوم توالی انتشار Concept of release sequence

مدل حافظه C++ و عملیات اتمی C++ memory model and atomic operations

  • مقدمه ای بر عملیات اتمی Introduction to atomic operations

  • مقدمه ای بر عملیات اتمی Introduction to atomic operations

  • عملکرد std::atomic_flag Functionality of std::atomic_flag

  • عملکرد std::atomic_flag Functionality of std::atomic_flag

  • عملکرد std::atomic_bool Functionality of std::atomic_bool

  • عملکرد std::atomic_bool Functionality of std::atomic_bool

  • توضیح توابع compare_exchange Explanation of compare_exchange functions

  • توضیح توابع compare_exchange Explanation of compare_exchange functions

  • نشانگرهای اتمی atomic pointers

  • بحث کلی در مورد انواع اتمی General discussion on atomic types

  • روابط مهم مربوط به عملیات اتمی بین رشته ها Important relationships related to atomic operations between threads

  • روابط مهم مربوط به عملیات اتمی بین رشته ها Important relationships related to atomic operations between threads

  • مقدمه ای بر گزینه های سفارش حافظه Introduction to memory ordering options

  • مقدمه ای بر گزینه های سفارش حافظه Introduction to memory ordering options

  • بحث در مورد memory_order_seq_cst Discussion on memory_order_seq_cst

  • بحث در مورد memory_order_seq_cst Discussion on memory_order_seq_cst

  • مقدمه ای بر مرتب سازی مجدد دستورالعمل ها Introduction to instruction reordering

  • مقدمه ای بر مرتب سازی مجدد دستورالعمل ها Introduction to instruction reordering

  • بحث در مورد memory_order_relaxed Discussion on memory_order_relaxed

  • بحث در مورد memory_order_relaxed Discussion on memory_order_relaxed

  • بحث در مورد memory_order_acquire و memory_order_release Discussion on memory_order_acquire and memory_order_release

  • جنبه های مهم memory_order_acquire و memory_order_release Important aspects of memory_order_acquire and memory_order_release

  • مفهوم همگام سازی گذرا Concept of transitive synchronization

  • مفهوم همگام سازی گذرا Concept of transitive synchronization

  • بحث در مورد memory_order_consume Discussion on memory_order_consume

  • مفهوم توالی انتشار Concept of release sequence

  • اجرای mutex spin lock Implementation of spin lock mutex

  • اجرای mutex spin lock Implementation of spin lock mutex

ساختارهای داده و الگوریتم های رایگان را قفل کنید Lock free data structures and algorithms

  • مکانیسم بازیابی حافظه پشته با استفاده از شمارش رشته Stack memory reclaim mechanism using thread counting

  • مکانیسم بازیابی حافظه پشته با استفاده از شمارش مرجع Stack memory reclaim mechanism using reference counting

ساختارهای داده و الگوریتم های رایگان را قفل کنید Lock free data structures and algorithms

  • مقدمه و برخی اصطلاحات Introduction and some terminology

  • مقدمه و برخی اصطلاحات Introduction and some terminology

  • جمع بندی پشته Stack recap

  • جمع بندی پشته Stack recap

  • پشته ایمن نخ بدون قفل ساده Simple lock free thread safe stack

  • پشته ایمن نخ بدون قفل ساده Simple lock free thread safe stack

  • مکانیسم بازیابی حافظه پشته با استفاده از شمارش رشته Stack memory reclaim mechanism using thread counting

  • مکانیسم بازیابی حافظه پشته با استفاده از نشانگرهای خطر Stack memory reclaim mechanism using hazard pointers

  • مکانیسم بازیابی حافظه پشته با استفاده از نشانگرهای خطر Stack memory reclaim mechanism using hazard pointers

  • مکانیسم بازیابی حافظه پشته با استفاده از شمارش مرجع Stack memory reclaim mechanism using reference counting

استخرهای نخ Thread pools

  • مجموعه موضوعات با وظایف انتظار Thread pool with waiting tasks

  • استخر نخ با دزدی کار Thread pool with work stealing

استخرهای نخ Thread pools

  • استخر نخ ساده Simple thread pool

  • استخر نخ ساده Simple thread pool

  • مجموعه موضوعاتی که اجازه می‌دهد روی کارهای ارسالی منتظر بمانند Thread pool which allowed to wait on submitted tasks

  • مجموعه موضوعاتی که اجازه می‌دهد روی کارهای ارسالی منتظر بمانند Thread pool which allowed to wait on submitted tasks

  • مجموعه موضوعات با وظایف انتظار Thread pool with waiting tasks

  • به حداقل رساندن اختلاف در صف کار Minimizing contention on work queue

  • به حداقل رساندن اختلاف در صف کار Minimizing contention on work queue

  • استخر نخ با دزدی کار Thread pool with work stealing

بخش پاداش: برنامه نویسی موازی در دستگاه های موازی انبوه با CUDA Bonus section : Parallel programming in massively parallel devices with CUDA

  • سازماندهی موضوعات در برنامه CUDA 1 Organization of threads in CUDA program 1

  • محاسبه شاخص منحصر به فرد برای رشته ها در یک شبکه دو بعدی Unique index calculation for threads in a 2D grid

  • زمان بندی برنامه CUDA Timing a CUDA program

  • انتقال حافظه CUDA CUDA memory transfer

  • رسیدگی به خطا در برنامه CUDA Error handling in a CUDA program

بخش پاداش: برنامه نویسی موازی در دستگاه های موازی انبوه با CUDA Bonus section : Parallel programming in massively parallel devices with CUDA

  • تنظیم محیط برای CUDA Setting up the environment for CUDA

  • تنظیم محیط برای CUDA Setting up the environment for CUDA

  • عناصر برنامه CUDA Elements of CUDA program

  • عناصر برنامه CUDA Elements of CUDA program

  • سازماندهی موضوعات در برنامه CUDA 1 Organization of threads in CUDA program 1

  • سازماندهی موضوعات در برنامه CUDA 2 Organization of threads in CUDA program 2

  • سازماندهی موضوعات در برنامه CUDA 2 Organization of threads in CUDA program 2

  • محاسبه شاخص منحصر به فرد برای موضوعات در یک شبکه Unique index calculation for threads in a grid

  • محاسبه شاخص منحصر به فرد برای موضوعات در یک شبکه Unique index calculation for threads in a grid

  • محاسبه شاخص منحصر به فرد برای رشته ها در یک شبکه دو بعدی Unique index calculation for threads in a 2D grid

  • محاسبه شاخص منحصر به فرد برای رشته ها در یک شبکه دو بعدی 2 Unique index calculation for threads in a 2D grid 2

  • محاسبه شاخص منحصر به فرد برای رشته ها در یک شبکه دو بعدی 2 Unique index calculation for threads in a 2D grid 2

  • زمان بندی برنامه CUDA Timing a CUDA program

  • انتقال حافظه CUDA CUDA memory transfer

  • مثال آرایه جمع Sum array example

  • مثال آرایه جمع Sum array example

  • رسیدگی به خطا در برنامه CUDA Error handling in a CUDA program

  • ویژگی های دستگاه CUDA CUDA device properties

  • ویژگی های دستگاه CUDA CUDA device properties

نمایش نظرات

آموزش همزمانی C++ مدرن در عمق (C++17/20)
جزییات دوره
10 hours
98
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
10,574
4.2 از 5
ندارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Kasun Liyanage Kasun Liyanage

مهندس نرم افزار و بنیانگذار اینتلکت، یکی از بنیانگذاران cpphive