آموزش قسمت A - Multithreading & Thread Synchronization - Pthreads

Part A - Multithreading & Thread Synchronization - Pthreads

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: لینوکس POSIX Threads ( Pthreads ), Thread Synchronization, Operating System Concepts, C/C++ programming with Projects MultiThreading Fundamentals Concurrency Mutual Exclusion Vs Atomocity Thread Synchronization Techniques Writing Thread Safety Codes, SeMUThreading Questions سیستم‌های عامل مشتاق یادگیری و تعالی برای نوشتن کدهای زیادی هستند

به مجموعه دوره های چند رشته ای خوش آمدید - دوره کلاس کارشناسی ارشد رشته ها.


این دوره برای کسانی است که می خواهند مفاهیم بنیادی را در مورد Multi-threading و مفاهیم مرتبط توسعه دهند. در این دوره، ما مفاهیم Multi-threading مبتنی بر Pthreads (رشته های POSIX) در پلتفرم لینوکس را پوشش خواهیم داد.

اگرچه ما از زبان C برای نشان دادن مفاهیم استفاده می کنیم، مفاهیم برای هر زبان برنامه نویسی مناسب هستند. این دوره برای برنامه نویسان ++C به همان اندازه ارزشمند است. سایر برنامه نویسان زبان نیز ممکن است این دوره را مفید بدانند زیرا ما مفاهیم Multithreading نزدیک به سطوح صفر پایه بدون Abstraction را توضیح می دهیم.

ما چندین مفهوم درگیر در multithreading را مورد بحث قرار خواهیم داد و هر مفهوم را از طریق یک برنامه نمونه نشان خواهیم داد. چندین مفهوم مهم شامل، اما محدود به آنها نمی شود - بن بست، محرومیت متقابل، اتمی، همگام سازی نخ، شرایط مسابقه، انشعاب نخ، و بسیاری دیگر.

در قسمت بعدی این دوره، دانش خود را از Multi-threading به مفاهیم پیشرفته، از جمله پروژه های کوچک در Multithreading و Thread Synchronization گسترش خواهیم داد.


در هر مرحله از این مجموعه دوره، شما باید کدهای چند رشته ای زیادی بنویسید. بنابراین برای تسلط بر Multi-threading آماده باشید. در طول سفر، ما چندین موضوع و سؤال مورد علاقه مصاحبه را پوشش خواهیم داد تا شما را در کنار مصاحبه آماده کنیم.


با آرزوی موفقیت!


فهرست مطالب:

= = = ======= = = =

1. درک موضوعات

  • خاتمه ایجاد رشته

  • شرایط مسابقه در ایجاد موضوع

  • انتقال آرگومان به تابع رشته

  • پشته کردن حافظه Mgmt برای برنامه های چند رشته ای

  • زمان‌بندی موضوع

2. درک همزمانی و موازی

  • تکینگی در مقابل همزمانی در مقابل موازی گرایی

  • طراحی فرآیند همزمان - 2 مثال

  • رشته ها به عنوان فرآیند سبک وزن

  • کارهای همپوشانی و غیرهمپوشانی

3. موضوعات قابل اتصال و جدا شده

  • موضوعات قابل اتصال در مقابل موضوعات جدا

  • نحوه پیوستن به یک رشته

  • به چه کسی ملحق شویم؟

  • نمونه - برنامه کاهش نقشه

4. ارتباط بین رشته ای

  • درک پاسخ به تماس و نشانگرهای عملکرد

  • بهترین راه برای پیاده سازی ITC

  • اجرای زنجیره های اعلان

    • یک مدل مشترک ناشر

    • نحوه اشتراک/لغو اشتراک

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

5. لغو موضوع ناهمزمان

  • لغو موضوع

  • لغو موضوع ناهمزمان و معوق

  • مشکل با لغو موضوع Async

    • نشت منابع

    • Invariants

    • بن بست ها

  • مفهوم کنترل‌کننده‌های پاک‌سازی موضوع

    • جلوگیری از نشت منابع

    • فساد ساختار داده - متغیرها

    • لغو باعث بن بست می شود

6. لغو معوق

  • درک لغو معوق

  • اجرا

7. موضوعات شنونده - تفویض مسئولیت

  • چرا رشته های شنونده؟

  • طراحی رشته های شنونده

  • تغییر کد و نسخه نمایشی

  • لغو موضوعات مسدود شده

8. همگام سازی موضوع

  • بخش بحرانی

  • قوانین Mutex

  • قفل Mutex

    • قفل Mutex - قفل کد

    • قفل Mutex - قفل داده

  • APIهای مبتنی بر Mutex

  • Mutexes در عمل

9. بن بست

  • بن بست ها چیست و چرا اتفاق می افتد؟

  • شرایط لازم برای وقوع بن بست

  • قفل Mutex ترتیب ایجاد بن بست

10. متغیرهای شرط

  • درک CV

  • CV در مقابل Mutex

  • سیگنال صبر کنید( )

  • همگام سازی موضوع تولیدکننده و مصرف کننده

  • بیداری های ساختگی

  • رزومه اختصاصی موضوع در مقابل منبع

  • پخش یک CV

  • مشکل تولیدکننده-مصرف کننده

    را اجرا کنید

11. مسئله فیلسوف غذاخوری

  • شرح مشکل

  • تنظیم ساختارهای داده

  • تنظیم برنامه تخصیص

  • بحث فلوچارت/الگوریتم

  • اجرای نهایی (گام به گام)

12. سمافورها

  • مقدمه

  • Semaphores vs Mutexes

  • نحوه کار سمافور

  • مشکل شدید جایگزینی

  • اجرای سمافور

  • انواع سمافور

  • سمافورهای قوی و ضعیف


فهرست موضوعات چند رشته ای پیشرفته آینده برای دوره بعدی (در حال انجام)

= = = = = = = = = = = = = = = = = = = = =


1. مکث و از سرگیری موضوعات

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

3. مشکلات استاندارد - مشکل خواننده/نویسنده

4. پیاده سازی موانع موضوع

5. پیاده سازی Thread Monitors

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

7. تشخیص و پیشگیری از بن بست

8. صف های انتظار

9. تایمرها را با استفاده از Threads

پیاده سازی کنید

10. نحوه انشعاب فرآیند چند رشته ای

11. همگام سازی فرآیند با استفاده از Semaphores نامگذاری شده


یادگیری مبارک.


بررسی ویژه

این دوره فوق العاده است. من بسیار خوشحالم که مربی تصمیم گرفت دوره هایی را در مورد Udemy ارائه دهد. اولاً، یافتن دوره‌هایی با موضوعات پیشرفته‌تر بسیار نادر است. به عنوان یک توسعه‌دهنده نرم‌افزار، من عاشق یادگیری هستم، اما اغلب از اینکه Udemy تا حد زیادی مطالب مبتدی دارد ناامید می‌شوم (که قابل درک است). سپس دوره های CSEPracticals وجود دارد. من اینجا چیزهای زیادی یاد گرفتم. این چیزهای با ارزش و دنیای واقعی است. یادگیری اینکه چگونه چند رشته ای در C واقعاً در موارد استفاده در دنیای واقعی اعمال می شود و پیاده سازی این موارد استفاده به تنهایی بسیار مفید است. دستورالعمل واضح بود، اطلاعات ارزشمند بود. نمونه کدها فراوان است. استاد به وضوح در مورد شبکه بسیار آگاه است و بنابراین نمونه های دوره تمایل دارند در این جهت متمایل شوند. من بسیار تحت تاثیر قرار گرفتم و از این دوره بسیار لذت بردم. من نمی توانم منتظر بمانم تا موارد دیگر را توسط CSEPracticals بررسی کنم.


من به تازگی این دوره را به پایان رسانده ام و نمی توانم آن را بیشتر توصیه کنم. این یک دوره عالی در زمینه چند رشته ای است و دقیقاً همان چیزی را که از ابتدا در نظر دارد به دست می آورد. برخی از ویژگی های این دوره 1) شما کدهای زیادی می نویسید و در استفاده از کتابخانه pthread اعتماد به نفس بیشتری پیدا می کنید (همراه با برخی موارد دیگر، یاد گرفتم که استفاده صحیح از تابع assert چقدر می تواند مهم باشد). 2) Abishekh به روش های مختلف همگام سازی عمیق می پردازد و نشان می دهد که باید آنها را با استفاده از ابزارهای اساسی مانند mutex و متغیرهای شرط بسازید. این به شما اعتماد به نفس زیادی می‌دهد، و در صورتی که سیستم‌عامل یا کتابخانه انتخابی‌تان دارای این سیستم‌عامل نباشد، می‌توانید در آینده خودتان را بسازید. این به نظر من بزرگترین نقطه قوت دوره است. 3) تیم CSE Practicals بسیار پاسخگو است و می توانید انتظار داشته باشید که در یک بازه زمانی بسیار معقول به سؤالات خود پاسخ دهید. در حال حاضر ادامه دوره Ovais


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

شروع کار با Multi-threading Getting Started With Multi-Threading

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

  • Thread چیست؟ What is a Thread ?

  • عضویت در گروه تلگرام Join Telegram Group

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

  • سلام جهان سابق - قسمت 1 Hello World Ex - Part 1

  • سلام جهان سابق - قسمت 2 Hello World Ex - Part 2

  • شرایط مسابقه در ایجاد موضوع Race Condition on Thread Creation

  • پایان تاپیک Thread Termination

  • پایان رشته اصلی ( ). main( ) thread termination

  • به اشتراک گذاری منابع Resource Sharing

  • Thread Stack Memory Mgmt Thread Stack Memory Mgmt

  • زمان بندی موضوع Thread Scheduling

همزمانی در مقابل موازی (بخش تئوری) Concurrency Vs Parallelism (Theory Section)

  • درک همزمانی (قیاس) Understanding Concurrency (Analogy)

  • درک موازی (قیاس) Understanding Parallelism (Analogy)

  • درک تکینگی (قیاس) Understanding Singularism (Analogy)

  • قیاس <--> جهان چند رشته ای (نقشه برداری) Analogy <--> Multithreading World (Mapping)

  • محیط چند رشته ای Multithreading Environment

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

  • طراحی فرآیند همزمان - مثال 1 Concurrent Process Design - Example 1

  • طراحی فرآیند همزمان - مثال 2 Concurrent Process Design - Example 2

  • چرا Thread ها را فرآیندهای سبک وزن می نامند؟ Why Threads are called Light Weighted Processes ?

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

  • نتیجه گیری و جمع بندی Conclusion and Summarization

  • سوالات احتمالی مصاحبه Probable Interview Questions

موضوعات قابل اتصال و جدا شده Joinable and Detached Threads

  • موضوعات قابل پیوستن Joinable Threads

  • موضوعات جدا شده Detached Threads

  • موضوعات قابل پیوستن در عمل Joinable Threads in Action

  • به چه کسی بپیوندیم؟ Whom to Join ?

  • پیاده سازی الگوریتم Map-Reduce - بیان مسئله Implementing Map-Reduce Algorithm - Problem Statement

  • چه زمانی موضوع قابل اتصال/جدا شده ایجاد کنیم؟ When to Create Joinable/Detached Thread ?

  • تکلیف تمرین Practice Assignment

ارتباط بین رشته ای Inter Thread Communication

  • ارتباط بین رشته ای Inter Thread Communication

  • انتقال محاسبات Transfer of Computation

  • انتقال محاسبات - مثال Transfer of Computation - Example

  • باز کردن دروازه‌ها برای مدل مشترک ناشر Opening Gates to Publisher Subscriber Model

بگذارید به تعطیلات برویم! آری Let us go on Vacations ! yaay !

  • تعطیلات! آن را از دست ندهید! Vacations ! Dont miss it !

زنجیره های اطلاع رسانی Notification Chains

  • زنجیره های اطلاع رسانی - مقدمه Notification Chains - Introduction

  • NFC - نمایش تصویری NFC - Pictorial Representation

  • NFC - ساختار داده NFC - Data Structure

  • پیاده سازی NFC NFC Implementation

  • تکلیف - NFC مقداری بهبود Assignment - NFC Some Enhancement

  • دنیای واقعی - بیان مشکل در NFC - مدل مشترک ناشر Real World - Problem Statement On NFC - Publisher Subscriber Model

  • راه اندازی یک منبع داده Setting up a Data Source

  • راه اندازی ناشر Setting Up the Publisher

  • راه اندازی مشترک Setting up the Subscriber

  • اشتراک و اطلاع رسانی Subscription and Notification

  • تکلیف اجباری Mandatory Assignment

  • اجرای اشتراک Implementing Subscription

  • اجرای ابلاغیه Implementing Notification

  • نسخه ی نمایشی نهایی! Final Demo !

لغو موضوع - ناهمزمان Thread Cancellation - Asynchronous

  • چرا لغو موضوع؟ Why Thread Cancellation ?

  • درک لغو موضوع - حالت ناهمزمان Understanding Thread Cancellation - Asynchronous Mode

  • لغو موضوع ناهمزمان - برنامه پایه آزمایشی Asynchronous Thread Cancellation - Demo Base Program

  • لغو ناهمزمان - تغییرات کد Asynchronous Cancellation - Code Changes

  • مشکل نشت منبع موضوع Thread Resource Leaking Problem

  • فساد ساختار داده - متغیرها Data Structure Corruption - Invariants

  • لغو موضوع باعث بن بست می شود Thread Cancellation Causing Deadlocks

  • مدیریت نشت منابع در لغو موضوع Handling Resource Leaking on Thread Cancellation

  • تغییرات کد و نسخه ی نمایشی Code Changes and Demo

  • استفاده از کنترل کننده های پاکسازی Cleanup handlers Usage

لغو موضوع - به تعویق افتاد Thread Cancellation - Deferred

  • درک لغو معوق Understanding Deferred Cancellation

  • اجرای لغو معوق Deferred Cancellation Implementation

موضوعات شنونده 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

  • تکلیف - بیایید اضافه کنیم Assignment - Let's Add on

همگام سازی موضوع - شروع به کار Thread Synchronization - Getting Started

  • همگام سازی موضوع Thread Synchronization

  • ناحیه ی بحرانی Critical Section

  • موتکس ها Mutexes

  • Mutex چگونه کار می کند؟ How Mutex Works ?

  • قوانین Mutex Mutex Rules

  • قفل Mutex - قفل کد Mutex Locking - Code Locking

  • قفل Mutex - قفل داده ها Mutex Locking - Data Locking

  • API های Mutex Posix Mutex Posix APIs

  • Mutexes در عمل - بیان مشکل Mutexes in Action - Problem Statement

  • Mutexes در عمل - استقرار حذف متقابل Mutexes in Action - Deploying Mutual Exclusion

  • تکلیف در Mutexes و CS Assignment on Mutexes & CS

بن بست ها Deadlocks

  • بن بست ها Deadlocks

  • چهار شرط لازم برای بن بست Four Necessary Conditions for Deadlocks

  • سفارش قفل Mutex باعث بن بست می شود Mutex Lock Ordering Causing Deadlocks

متغیرهای شرط Condition Variables

  • شروع کار با CV Getting Started with CV

  • درک متغیرهای شرط Understanding Condition Variables

  • متغیرهای شرط در مقابل Mutex Condition Variables Vs Mutex

  • استفاده از متغیرهای شرط - انتظار و سیگنال Using Condition Variables - Wait & Signal

  • وظیفه Assignment

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

  • بیداری جعلی چیست؟ What is Spurious Wake Up ?

  • بیداری ساختگی - همگام سازی موضوعات مصرف کننده تولید کننده Spurious Wake Up - Producer Consumer Threads Synchronization

  • سوالات تکلیف Assignment Questions

  • درک شبه کدها از طریق قیاس دنیای واقعی Understanding Pseudocodes through Real World Analogy

  • رزومه اختصاصی در مقابل منبع خاص Thread specific Vs Resource Specific CV

  • پخش رزومه Broadcasting a CV

  • زمان آزمایشگاه - اجرای مصرف کننده تولید کننده Lab Time - Implement Producer Consumer

  • راه اندازی برنامه سوال Question Program Setup

  • مصرف کننده تولید کننده - پیاده سازی راه حل گام به گام Producer Consumer - Solution Implementation Step by Step

  • تکلیف - درک خود را آزمایش کنید Assignment - Test your Understanding

  • از بیداری جعلی با شرایط متعدد اجتناب کنید Avoid Spurious Wake with Multiple Conditions

مسئله فیلسوف غذاخوری Dining Philosopher Problem

  • توضیح بیان مسئله Problem Statement Explanation

  • تنظیم ساختار داده Data Structure Setup

  • تنظیم برنامه تکلیف Assignment Program Setup

  • راه حل - نقشه راه Solution - RoadMap

  • راه حل قسمت 1: پیاده سازی philosopher_fn( ) Solution Part 1 : Implementing philosopher_fn( )

  • راه حل قسمت 2: پیاده سازی philosopher_release_both_spoons( ) Solution Part 2 : Implementing philosopher_release_both_spoons( )

  • راه حل قسمت 3: پیاده سازی philosopher_get_access_both_spoons( ) Solution Part 3 : Implementing philosopher_get_access_both_spoons( )

  • راه حل قسمت 4: آزمایش و نتیجه گیری Solution Part 4 : Test and Conclude

موانع نخ Thread Barriers

  • مقدمه موانع موضوع Thread Barriers Introduction

  • عملکرد مانع نخ Thread Barrier Functioning

  • ساختارهای داده مانع نخ Thread Barrier Data Structures

  • Thread Barrier APIs Thread Barrier APIs

  • پیاده سازی Thread Barrier Wait ( ). Thread Barrier Wait ( ) Implementation

  • نسخه ی نمایشی مانع موضوع Thread Barrier Demo

قفل چرخشی Spin Locks

  • قفل چرخشی Spin Locks

سمافورها Semaphores

  • مقدمه و قیاس Introduction & Analogy

  • سمافور در مقابل موتکس Semaphore Vs Mutex

  • Semaphore APIها و نمونه کار Semaphore APIs and Working Example

  • سمافور - نمونه سلام جهان Semaphore - Hello World Example

  • مشکل جایگزینی شدید Strict Alternation Problem

  • مسائل ساده مبتنی بر سمافور Semaphore based Simple Problems

سمافورها - پیاده سازی داخلی Semaphores - Internal Implementation

  • Semaphores پیاده سازی داخلی Semaphores Internal Implementation

  • درک متغیر شمارنده سمافور Understanding Semaphore Counter Variable

  • پیاده سازی سمافور Semaphore Implementation

  • انواع سمافورها Types of Semaphores

  • سمافورهای قوی و ضعیف Strong and Weak Semaphores

  • سوالات تکلیفی در سمافورها Assignment Questions on Semaphores

Mutexes/Locks بازگشتی Recursive Mutexes/Locks

  • Mutex بازگشتی چیست؟ What is Recursive Mutex ?

  • سناریوی عملی استفاده از قفل های انزوا Practical Scenario of Using Reclusive Locks

  • تکلیف - پیاده سازی داخلی Rec Mutex Assignment - Rec Mutex Internal Implementation

  • Mutex بازگشتی - تعریف ساختار داده Recursive Mutex - Data Structure Definition

  • rec_mutex_lock() پیاده سازی API rec_mutex_lock() API Implementation

  • rec_mutex_unlock() پیاده سازی API rec_mutex_unlock() API Implementation

قفل خواندن و نوشتن Read-Write Locks

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

  • درک قفل خواندن/نوشتن Understanding Read/Write Locks

  • API های POSIX POSIX APIs

  • برنامه نمونه نمایشی Demo Example Program

  • RW Lock Self Implementation - شروع RW Lock Self Implementation - Begin

  • ساختار داده RW LOCK سفارشی Custom RW LOCK Data Structure

  • اجرای Lock API را بخوانید Read Lock API Implementation

  • Write Lock API Implementation Write Lock API Implementation

  • RW lock Unlock API پیاده سازی RW lock Unlock API Implementation

  • وظیفه Assignment

  • اعتبار سنجی اجرای قفل RW ما Validating our RW lock Implementation

اجرای Thread Safe بسیار همزمان CRUD عملیات Implement Thread Safe Highly Concurrent CRUD Operations

  • عملیات CRUD - مقدمه CRUD Operations - Introduction

  • جنبه های عملکرد با قفل های گسترده تر Performance Aspects with Wider Locks

  • اهداف CRUD CRUD Goals

  • ابزارهایی که برای پیاده سازی Thread Safe و بسیار همزمان عملیات CRUD نیاز داریم Tools We need to Implement Thread Safe and Highly Concurrent CRUD Operations

  • درک مرجع شمارش Understanding Reference Counting

  • Reference Count APIs Reference Count APIs

  • نمونه‌های استفاده از تعداد رفراندوم Ref Count Usage Examples

  • CRUD: قوانین قفل کردن CRUD : Locking Rules

  • CRUD: الگوریتم برای عملیات READ & UPDATE (WRITE). CRUD : Algorithm for READ & UPDATE ( WRITE ) Operation

  • راه اندازی پروژه نمونه آزمایشی Setting Up Demo Example Project

  • CRUD: الگوریتم برای عملیات READ & UPDATE - پیاده سازی CRUD : Algorithm for READ & UPDATE Operation - Implementation

  • CRUD: الگوریتم برای عملیات ایجاد CRUD : Algorithm for CREATE Operation

  • CRUD: الگوریتم برای عملیات DELETE CRUD : Algorithm for DELETE Operation

  • بحث های مثال CRUD CRUD Example Discussions

  • نسخه نمایشی نهایی - Crud_algo.c Final Demo - Crud_algo.c

  • در مورد Deadlocks چطور؟ آیا می تواند در راه حل CRUD ما اتفاق بیفتد؟ What about Deadlocks ? Can it Happen in our CRUD solution ?

پیوست A: فهرست پیوندی مبتنی بر چسب Appendix A : Glue Based Linked List

  • معرفی Introduction

  • تعریف GLThread GLThread Definition

  • تفاوت تصویری Pictorial Difference

  • آفست فیلد ساختار Structure Field Offset

  • درج گره Node Insertion

  • تکرار Iteration

  • حذف گره Node Removal

  • Code Walk - نسخه ی نمایشی Code Walk - Demo

  • مشکلات لیست پیوندی سنتی Traditional Linked List Problems

  • مزایای GLThread GLThread Benefits

پاداش - آب نبات بگیرید! Bonus - Get some Candies !

  • دوره های من را به صورت رایگان دریافت کنید Get My Courses for Free

نمایش نظرات

آموزش قسمت A - Multithreading & Thread Synchronization - Pthreads
جزییات دوره
16.5 hours
157
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
3,896
4.6 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Abhishek CSEPracticals Abhishek CSEPracticals

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

Shiwani Nigam Shiwani Nigam

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

Ekta Ekta Ekta Ekta

مدیر تاسیسات