توضیحات
برنامه نویسی چند رشته ای در زبان C
نام دوره : Part A – Multithreading & Thread Synchronization – Pthreads
پیش نیاز:
- دانش زبان C ضروری است
- سیستم عامل لینوکس
- اشتیاق به یادگیری
- اشتیاق به نوشتن تعداد زیادی کد
توضیحات:
این دوره برای کسانی است که می خواهند مفاهیم اساسی در Multi-threading و مفاهیم مرتبط را یاموزند.
در این دوره، مفاهیم Multi-threading مبتنی بر Pthreads (رشته های POSIX) در پلتفرم لینوکس را پوشش خواهیم داد.
اگرچه ما از زبان C برای نشان دادن مفاهیم استفاده می کنیم، اما این آموزش ها برای هر زبان برنامه نویسی مناسب هستند.
این دوره برای برنامه نویسان ++C به همان اندازه ارزشمند است. سایر برنامه نویسان زبان نیز ممکن است این دوره را مفید بدانند زیرا ما مفاهیم Multithreading نزدیک به سطوح صفر پایه بدون Abstraction را توضیح می دهیم.
ما مفایهم مختلف در multithreading را مورد بحث قرار خواهیم داد و هر مفهوم را از طریق یک برنامه نمونه نشان خواهیم داد.
چندین مفهوم مهم شامل Deadlocks, Mutual Exclusion, Atomicity, Thread Synchronization, Race Conditions, Thread forking را مورد بررسی قرار خواهیم داد.
در قسمت بعدی این دوره، ما دانش خود را از Multi-threading به مفاهیم پیشرفته، از جمله پروژه های کوچک در Multithreading و Thread Synchronization گسترش خواهیم داد.
در هر مرحله از سری دوره برنامه نویسی چند رشته ای در زبان C، شما باید کدهای چند رشته ای زیادی بنویسید. بنابراین برای تسلط بر Multi-threading آماده باشید.
فهرست مطالب برنامه نویسی چند رشته ای در زبان C:
1. درک Threads
- ایجاد و پایان تاپیک
- شرایط مسابقه در ایجاد موضوع
- انتقال آرگومان به تابع موضوع
- پشته حافظه Mgmt برای برنامه های چند رشته ای
- زمان بندی موضوع
2. درک همزمانی و موازی
- تکینگی در مقابل همزمانی در مقابل موازی گرایی
- طراحی فرآیند همزمان – 2 مثال
- نخ ها به عنوان فرآیند سبک وزن
- کارهای همپوشانی و غیر همپوشانی
3. موضوعات قابل اتصال و جدا شده
- Joinable Vs Detached Threads
- چگونه به یک موضوع بپیوندیم
- به چه کسی بپیوندیم؟
- نمونه – برنامه کاهش نقشه
4. ارتباط بین رشته ای
- درک تماس های برگشتی و نشانگرهای تابع
- بهترین راه برای پیاده سازی ITC
- پیاده سازی زنجیره های اطلاع رسانی
- یک مدل مشترک ناشر
- نحوه اشتراک/لغو اشتراک
- نحوه ارسال اعلان برای مشترکین
5. لغو موضوع ناهمزمان
- لغو موضوع
- لغو موضوع ناهمزمان و معوق
- مشکل با لغو موضوع Async
- نشت منابع
- متغیرها
- بن بست ها
- مفهوم Handler های پاکسازی نخ
- جلوگیری از نشت منابع
- فساد ساختار داده – متغیرها
- لغو باعث بن بست می شود
6. لغو معوق
- درک لغو معوق
- پیاده سازی
7. موضوعات شنونده – تفویض مسئولیت
- چرا رشته های شنونده؟
- طراحی رشته های شنونده
- تغییرات کد و نسخه ی نمایشی
- لغو موضوعات مسدود شده
8. همگام سازی موضوع
- ناحیه ی بحرانی
- قوانین Mutex
- قفل Mutex
- قفل Mutex – قفل کد
- قفل Mutex – قفل داده ها
- API های مبتنی بر Mutex
- Mutexes در عمل
9. بن بست ها
- بن بست چیست و چرا اتفاق می افتد؟
- شرایط لازم برای وقوع بن بست
- قفل Mutex سفارش ایجاد بن بست
10. متغیرهای شرط
- درک CV
- CV در مقابل Mutex
- انتظار ( ) و سیگنال ( )
- همگام سازی موضوع تولید کننده و مصرف کننده
- بیداری جعلی
- رزومه اختصاصی موضوع در مقابل منبع
- پخش رزومه
- اجرای مشکل تولیدکننده-مصرف کننده
11. Dining Philosopher Problem
- شرح مشکل
- راه اندازی ساختارهای داده
- تنظیم برنامه تکلیف
- بحث فلوچارت/الگوریتم
- اجرای نهایی (گام به گام)
12. Semaphores
- معرفی
- سمافورها در مقابل موتکس ها
- نحوه کار سمافور
- مشکل جایگزینی شدید
- پیاده سازی سمافور
- انواع سمافور
- سمافورهای قوی و ضعیف
دوره برنامه نویسی چند رشته ای در زبان C برای چه کسانی است:
- فارغ التحصیلان مهندسی
- متخصصین شاغل و جویندگان کار
- لنسرهای آزاد، مهندسین سیستم، توسعه دهندگان
بخشی از دوره :
یودمی ایران –
دوره در خواستی خود را از راه های ارتباطی در خواست کنید