آموزش الگوهای طراحی برنامه نویسی ناهمزمان - C/C++

Asynchronous Programming Design Patterns - C/C++

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
توضیحات دوره: برنامه نویسی سیستم، C/++، مفاهیم چند رشته ای، همگام سازی رشته ها، دوره های پروژه سیستم عامل، حلقه های رویداد هنر برنامه نویسی ناهمزمان نحوه برقراری ارتباط به روش ناهمزمان نوشتن یک زمانبندی محاسباتی کاهش برنامه چند رشته ای به پیاده سازی نرم افزارهای پیاده سازی تک رشته ای در یک برنامه رشته ای طراحی حلقه رویداد و پیاده سازی پیاده سازی تماس های مسدود کننده و غیر مسدود پیش نیازها: مفاهیم همگام سازی موضوع را بدانید - متغیرهای Mutexes و Condition (هر کتابخانه رشته، اما ما از pthread ها استفاده خواهیم کرد) C یا C++ در ترجیح شما زبان fav هر زبان رایج دیگری است پس آن نیز خوب است. مفاهیم را قرض بگیرید و به زبان مورد علاقه خود پیاده سازی کنید. WitZeal راحت برای یادگیری و برتری - فراتر از آنچه که Crowd انجام می دهد (DS/ALGO/CP )h ساختارهای داده پایه مانند Linked-List.

30 نوامبر 2023 - این دوره در حال توسعه است


به دنیای برنامه نویسی ناهمزمان خوش آمدید!!


برنامه نویسی ناهمزمان در هر جایی که برنامه شما با دیگر موجودیت های خارجی تعامل داشته باشد استفاده می شود - چه رشته های دیگر، چه فرآیندهای دیگر. این جهان طبیعتاً ناهمزمان است. ناهمزمان در لغت به معنای - هر چیزی ممکن است در هر زمان رخ دهد - غیر قابل پیش بینی است. چگونه از طریق برنامه نویسی Asynchronous نرم افزار بنویسید؟ این چیزی است که ما در این دوره خواهیم آموخت. پروژه های نرم افزاری بزرگ با اندازه های معقول ناهمزمان هستند. پروژه‌های نرم‌افزاری از لحظه‌ای که شروع به یکپارچه‌سازی و برقراری ارتباط با موجودیت‌های خارجی یا چند رشته‌ای می‌کنند، مرزهای همزمان خود را ترک می‌کنند.

برنامه نویسی ناهمزمان به طور گسترده در سیستم های توزیع شده، پروتکل های شبکه، پایگاه های داده توزیع شده و غیره استفاده می شود.


پیش نیاز این دوره:

مفاهیم همگام‌سازی رشته را بشناسید - Mutexes و متغیرهای شرط (هر کتابخانه رشته‌ای، اما ما از pthread استفاده خواهیم کرد)

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

راحتی با ساختارهای داده پایه مانند Linked-List.

علت یادگیری و برتری - فراتر از کاری که Crowd انجام می دهد (DS/ALGO/CP)


محصول نهایی این دوره باید یک کتابخانه کوچک و در عین حال کتابخانه بسیار قدرتمندی باشد که به شما امکان می دهد نرم افزار را از طریق برنامه نویسی ناهمزمان توسعه دهید.


سطح دشواری دوره:

سطح دوره از متوسط ​​تا پیشرفته است. خیلی مبتدیان لطفا از ثبت نام در دوره خودداری کنند.



مشکلات طراحی نرم افزار برای حل این دوره:


مشکل 1. شبیه سازی همزمانی در برنامه های تک رشته ای

مشکل 2. کاهش برنامه های چند رشته ای به تک رشته ای

مشکل 3. تعویق کار

مشکل 4. ارتباط ناهمزمان

مشکل 5. صف بندی و پردازش بسته های شبکه ورودی




فهرست مطالب قدیمی:

1. برنامه نویسی همزمان چیست؟

2. برنامه نویسی ناهمزمان چیست؟

3. چه زمانی از برنامه نویسی ناهمزمان استفاده کنیم؟

4. پیش نیازها

5. توسعه یک پروژه مبتنی بر برنامه نویسی ناهمزمان

6. افزودن ورودی کاربر CLI

7. افزودن موضوعات شنونده

8. اضافه کردن تایمر

9. افزودن تبلیغات دوره ای

10. تجزیه و تحلیل مشکلات در پروژه ها

11. طراحی توزیع کننده رویداد (که حلقه رویداد نیز نامیده می شود) (ED)

12. ادغام Event Dispatcher در پروژه

13. سریال کردن ورودی CLI کاربر با استفاده از ED

14. سریال‌سازی رویدادهای داخلی تایمر با استفاده از ED

15. سریال سازی پردازش بسته با استفاده از ED

16. سریال سازی تبلیغات دوره ای

17. توزیع رویداد با استفاده از ED

18. پردازش جزئی پیشرونده با استفاده از ED

19. در حال تجزیه و تحلیل پروژه ما

20. آینده ها و وعده ها

21. Promises Pipeline and Combinators

22. استخرهای موضوع

23. همزمان در مقابل ناهمزمان در مقابل همزمانی

24. ایجاد موضوعات کارگری برای کارهای گران قیمت


موفق باشید! یادگیری مبارک.


پس از انجام این دوره، متوجه خواهید شد:

  • مشکلات برنامه نویسی همزمان

  • طراحی و پیاده سازی برنامه/نرم افزارهای ناهمزمان

  • چه نوع برنامه‌ها/نرم‌افزارهایی نباید چند رشته‌ای باشند

  • چه نوع برنامه‌ها/نرم‌افزارهایی باید ناهمزمان باشند

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

مفاهیمی که در این دوره یاد می گیرید برای سایر زبان های برنامه نویسی انتخابی شما قابل حمل هستند


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

آشنایی با اصطلاح Asynchronous Understanding the term Asynchronous

  • دستور جلسه Agenda

  • دسترسی به کد برای این دوره Code Access for this Course

  • همزمان در مقابل ناهمزمان مثال 1 Synchronous Vs Asynchronous Example 1

  • مثال 2 همزمان در مقابل ناهمزمان Synchronous Vs Asynchronous Example 2

  • ناهمزمان در مقابل چند رشته Asynchronous Vs Multi-Threading

  • مدل های طراحی چند رشته ای ناهمزمان Asynchronous Multi-Threading Design Models

  • چیدمان دوره Course Layout

شروع با برنامه نویسی ناهمزمان Getting Started with Asynchronous Programming

  • اهداف این بخش Goals of this Section

  • عملکرد داخلی حلقه رویداد Event Loop Internal Functioning

  • دسترسی به کد برای این دوره Code Access for this Course

  • ساختارهای داده حلقه رویداد Event Loop Data Structures

  • init( ) و run( ) API Implementation init( ) and run( ) API Implementation

  • وارد کردن Helping API Importing Helping APIs

  • پیاده سازی نخ EL EL Thread Implementation

  • ارسال کار Task Submission

  • نسخه ی نمایشی 1 - نسخه نمایشی استفاده از حلقه رویداد Demo 1 - Event Loop Usage Demo

  • نسخه ی نمایشی 2 - همزمانی تک رشته ای Demo 2 - Single Threaded Concurrency

  • چرا ما به قفل کردن در multi-threaded env نیاز داریم؟ Why we need locking in Multi-threaded env ?

  • چرا Event Loop ها بدون قفل هستند؟ Why Event Loops are lock free ?

  • حلقه رویداد همزمانی را فراهم می کند، اما موازی سازی ندارد Event Loop provides Concurrency, but no Parallelism

  • درک خود را آزمایش کنید Test your Understanding

الگوی طراحی 1 - سریال سازی جریان های چند رشته ای Design Pattern 1 - Serializing Multi-Threaded Flows

  • در این بخش چیست؟ What's in this Section ?

  • کارهای همپوشانی و غیر همپوشانی Overlapping & Non-Overlapping Work

  • آیا Multithreading همیشه برتر است؟ Is Multithreading Always Superior ?

  • ضمیمه C را کامل کنید Complete Appendix C

  • تعریف بیان مسئله Defining Problem Statement

  • بحث راه حل Solution Discussion

  • راه اندازی پروژه آزمایشی Setting up the Test Project

  • یکپارچه سازی حلقه رویداد - قسمت 1 Integrating Event Loop - Part 1

  • یکپارچه سازی حلقه رویداد - قسمت 2 Integrating Event Loop - Part 2

الگوی طراحی 2 - تایمرهای سریال Design Pattern 2 - Serializing Timers

  • دستور کار این بخش Agenda of this Section

  • وارد کردن کتابخانه تایمر به پروژه ما Importing Timer Library into our project

  • با کتابخانه تایمر آشنا شوید Get Familiar with the Timer Library

  • تغییرات کد توصیه می شود Code Changes Recommended

  • یکپارچه سازی تایمر - تغییرات کد Timer Integration - Code Changes

  • رویدادهای تایمر مدیریت حلقه رویداد Event Loop Handling Timer Events

  • خلاصه حلقه رویداد Event Loop Summary

ضمیمه A - درک همگام سازی مصرف کننده تولید کننده Appendix A - Understanding Producer Consumer Synchronization

  • درک همگام سازی مصرف کننده تولید کننده Understanding Producer Consumer Synchronization

  • بررسی سوراخ حلقه تولیدکننده-مصرف کننده Producer-Consumer Loop Hole Check

ضمیمه ب - درک همزمانی و موازی Appendix B - Understanding Concurrency and Parallelism

  • چرا به Concurrency نیاز داریم؟ Why do we need Concurrency ?

  • مثال 1 همزمانی Concurrency Example 1

  • مثال 2 همزمانی Concurrency Example 2

پیوست ج - افزودن موضوعات شنونده Appendix C - Adding Listener Threads

  • موضوعات شنونده - تفویض مسئولیت Listener Threads - Responsibility Delegation

  • آماده سازی اجرا Preparation of Implementation

  • API های شبکه و نسخه ی نمایشی Network APIs and Demo

  • اجرای برنامه چند شنونده Multi - Listener Application Implementation

  • موضوع شنونده - Quick Code Walk Listener Thread - Quick Code Walk

پیوست د - تایمرهای پوزیکس Appendix D - Posix Timers

  • دستور کار و پیش نیازها Agenda and Prerequisites

  • انواع تایمر Timer Types

  • API های Posix برای تایمرها Posix APIs for Timers

  • طراحی تایمر Timer Design

  • مراحل ایجاد تایمر Timer Creation Steps

  • پیاده سازی تایمر و نسخه ی نمایشی Timer Implementation and Demo

  • جایزه Bonus

نمایش نظرات

نظری ارسال نشده است.

آموزش الگوهای طراحی برنامه نویسی ناهمزمان - C/C++
خرید اشتراک و دانلود خرید تکی و دانلود | 160,000 تومان (5 روز مهلت دانلود) زمان تقریبی آماده سازی لینک دانلود این دوره آموزشی حدود 5 تا 24 ساعت می باشد.
جزییات دوره
5.5 hours
52
Udemy (یودمی) udemy-small
16 تیر 1402 (آخرین آپدیت رو دریافت می‌کنید، حتی اگر این تاریخ بروز نباشد.)
915
4.8 از 5
دارد
دارد
دارد

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Abhishek CSEPracticals Abhishek CSEPracticals

من شبکه می سازم!

Ekta Ekta Ekta Ekta

مدیر تاسیسات

Shiwani Nigam Shiwani Nigam

مجری بازاریابی دیجیتال

Udemy (یودمی)

یودمی یکی از بزرگ‌ترین پلتفرم‌های آموزشی آنلاین است که به میلیون‌ها کاربر در سراسر جهان امکان دسترسی به دوره‌های متنوع و کاربردی را فراهم می‌کند. این پلتفرم امکان آموزش در زمینه‌های مختلف از فناوری اطلاعات و برنامه‌نویسی گرفته تا زبان‌های خارجی، مدیریت، و هنر را به کاربران ارائه می‌دهد. با استفاده از یودمی، کاربران می‌توانند به صورت انعطاف‌پذیر و بهینه، مهارت‌های جدیدی را یاد بگیرند و خود را برای بازار کار آماده کنند.

یکی از ویژگی‌های برجسته یودمی، کیفیت بالای دوره‌ها و حضور استادان مجرب و با تجربه در هر حوزه است. این امر به کاربران اعتماد می‌دهد که در حال دریافت آموزش از منابع قابل اعتماد و معتبر هستند و می‌توانند به بهترین شکل ممکن از آموزش‌ها بهره ببرند. به طور خلاصه، یودمی به عنوان یکی از معتبرترین و موثرترین پلتفرم‌های آموزشی آنلاین، به افراد امکان می‌دهد تا به راحتی و با کیفیت، مهارت‌های مورد نیاز خود را ارتقا دهند و به دنبال رشد و پیشرفت شغلی خود باشند.