به مجموعه دوره های چند رشته ای خوش آمدید - دوره کلاس کارشناسی ارشد رشته ها.
این دوره برای کسانی است که می خواهند مفاهیم بنیادی را در مورد 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
نمایش نظرات