اپلیکیشن اندرویدی فلش‌کارت آموزشی برنامه نویسی همزمان و چندنخی (Concurrency & Multithreading) در C++

349,950 تومان
برنامه نویسی همزمان و چندنخی در C++: قدرت را آزاد کنید! برنامه نویسی همزمان و چندنخی در C++: قدرت را آزاد کنید! معرفی دوره آیا می‌خواهید برنامه‌های C++ خود را سریع‌تر، کارآمدتر و پاسخگوتر کنید؟ آیا به...
پرداخت اقساطی
در صورت خرید اقساطی هر قسط: 87,488 تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.
پرداخت اقساطی با دیجی‌پی پرداخت اقساطی با ترب‌پی

🎓 دوره آموزشی جامع

📚 اطلاعات دوره

عنوان دوره: دوره برنامه نویسی همزمان و چندنخی (Concurrency & Multithreading) در C++

موضوع کلی: برنامه نویسی

موضوع میانی: سی پلاس پلاس (++C)

📋 سرفصل‌های دوره

  • 1. مقدمه‌ای بر همزمانی (Concurrency) و توازی (Parallelism)
  • 2. چرا به برنامه‌نویسی همزمان نیاز داریم؟
  • 3. تاریخچه همزمانی در سی پلاس پلاس
  • 4. فرآیندها (Processes) در برابر نخ‌ها (Threads)
  • 5. مدل حافظه سی پلاس پلاس: یک نگاه کلی
  • 6. چالش‌های برنامه‌نویسی همزمان: Race Condition
  • 7. چالش‌های برنامه‌نویسی همزمان: Deadlock
  • 8. چالش‌های برنامه‌نویسی همزمان: Livelock و Starvation
  • 9. معماری سخت‌افزار: هسته‌های CPU، حافظه نهان (Cache) و انسجام حافظه
  • 10. قانون امدال (Amdahl's Law) و قانون گوستافسون (Gustafson's Law)
  • 11. راه‌اندازی محیط توسعه برای برنامه‌نویسی چندنخی
  • 12. اولین برنامه چندنخی: ساخت و اجرای یک نخ با `std::thread`
  • 13. مدیریت چرخه حیات نخ: `join()`
  • 14. مدیریت چرخه حیات نخ: `detach()`
  • 15. خطرات استفاده از نخ‌های جدا شده (Detached Threads)
  • 16. انتقال آرگومان به توابع نخ‌ها
  • 17. پاس دادن آرگومان‌ها با ارجاع (Reference) و `std::ref`
  • 18. انتقال مالکیت `std::thread` با `std::move`
  • 19. شناسایی نخ‌ها: `std::thread::id` و `std::this_thread::get_id`
  • 20. مدیریت استثناها (Exceptions) در نخ‌ها
  • 21. الگوی RAII برای مدیریت خودکار نخ‌ها (Scoped Thread)
  • 22. فضای نام `std::this_thread`: توابع `sleep_for`, `sleep_until`, `yield`
  • 23. مقدمه‌ای بر همگام‌سازی و نیاز به قفل‌ها
  • 24. حفاظت از داده‌های اشتراکی با `std::mutex`
  • 25. قفل‌گذاری و آزادسازی دستی: `lock()` و `unlock()`
  • 26. مشکلات قفل‌گذاری دستی: بن‌بست و مدیریت استثنا
  • 27. الگوی RAII برای قفل‌ها: `std::lock_guard`
  • 28. قفل‌گذاری انعطاف‌پذیر با `std::unique_lock`
  • 29. تلاش برای قفل‌گذاری: `try_lock()`
  • 30. قفل‌گذاری با زمان انتظار: `try_lock_for()` و `try_lock_until()`
  • 31. انتقال مالکیت قفل با `std::unique_lock`
  • 32. جلوگیری از بن‌بست: قفل‌گذاری چندین Mutex با `std::lock`
  • 33. قفل‌گذاری امن چندین Mutex با `std::scoped_lock` (C++17)
  • 34. انواع خاص Mutex: `std::recursive_mutex`
  • 35. معایب و موارد استفاده صحیح از `recursive_mutex`
  • 36. انواع خاص Mutex: `std::timed_mutex`
  • 37. شرایط مسابقه (Data Race) و رفتار تعریف‌نشده (Undefined Behavior)
  • 38. مقدمه‌ای بر متغیرهای شرطی (Condition Variables)
  • 39. انتظار برای یک شرط با `std::condition_variable` و `wait()`
  • 40. ارسال سیگنال به نخ‌های منتظر: `notify_one()`
  • 41. ارسال سیگنال به تمام نخ‌های منتظر: `notify_all()`
  • 42. مشکل بیداری‌های کاذب (Spurious Wakeups) و نحوه مدیریت آن
  • 43. پیاده‌سازی الگوی تولیدکننده-مصرف‌کننده (Producer-Consumer)
  • 44. استفاده از `std::condition_variable_any`
  • 45. ارتباط بین نخ‌ها: بازگرداندن مقادیر با `std::future`
  • 46. ایجاد `future` با استفاده از `std::promise`
  • 47. ایجاد `future` با استفاده از `std::packaged_task`
  • 48. اجرای ناهمزمان توابع با `std::async`
  • 49. سیاست‌های اجرا (Launch Policies) در `std::async`
  • 50. انتظار برای نتیجه `future`: `get()`, `wait()`, `wait_for()`
  • 51. انتشار استثناها از طریق `future` و `promise`
  • 52. اشتراک‌گذاری نتیجه بین چند نخ با `std::shared_future`
  • 53. اجرای یکباره یک تابع با `std::call_once` و `std::once_flag`
  • 54. قفل‌های خواننده-نویسنده با `std::shared_mutex` (C++17)
  • 55. قفل‌گذاری برای خواندن با `std::shared_lock` (C++17)
  • 56. همگام‌سازی گروهی از نخ‌ها با `std::latch` (C++20)
  • 57. همگام‌سازی چرخه‌ای با `std::barrier` (C++20)
  • 58. مدیریت منابع محدود با `std::counting_semaphore` (C++20)
  • 59. مقدمه‌ای بر عملیات اتمیک (Atomic Operations)
  • 60. کلاس قالب `std::atomic<T>`
  • 61. عملیات پایه‌ای اتمیک: `load`, `store`
  • 62. عملیات خواندن-تغییر-نوشتن: `exchange`, `compare_exchange_strong/weak`
  • 63. عملیات محاسباتی اتمیک: `fetch_add`, `fetch_sub`
  • 64. ساده‌ترین نوع اتمیک: `std::atomic_flag`
  • 65. برنامه‌نویسی بدون قفل (Lock-Free Programming): مفاهیم اولیه
  • 66. پیاده‌سازی یک شمارنده اتمیک بدون قفل
  • 67. پیاده‌سازی یک پشته (Stack) بدون قفل
  • 68. مشکل ABA در الگوریتم‌های بدون قفل
  • 69. مدل حافظه سی پلاس پلاس: روابط Happens-Before و Synchronizes-With
  • 70. ترتیب حافظه (Memory Ordering): Sequential Consistency
  • 71. ترتیب حافظه: Acquire-Release Semantics
  • 72. ترتیب حافظه: Relaxed Ordering
  • 73. استفاده عملی از ترتیب‌های مختلف حافظه
  • 74. حصارهای حافظه (Memory Fences) با `std::atomic_thread_fence`
  • 75. الگوهای طراحی همزمان: Thread Pool
  • 76. پیاده‌سازی یک Thread Pool ساده
  • 77. ارسال وظایف (Tasks) به Thread Pool و دریافت نتایج
  • 78. الگوی طراحی Active Object
  • 79. الگوی طراحی Monitor Object
  • 80. حافظه محلی نخ (Thread-Local Storage) با `thread_local`
  • 81. طراحی ساختارهای داده همزمان (Concurrent Data Structures)
  • 82. استراتژی‌های تقسیم کار بین نخ‌ها
  • 83. الگوی Fork-Join
  • 84. مقابله با وظایف وابسته به CPU در مقابل وظایف وابسته به I/O
  • 85. لغو کردن (Cancellation) وظایف در حال اجرا
  • 86. خاتمه دادن امن و صحیح به یک سیستم همزمان
  • 87. مقدمه‌ای بر الگوریتم‌های موازی در کتابخانه استاندارد (C++17)
  • 88. سیاست‌های اجرا (Execution Policies): `seq`, `par`, `par_unseq`
  • 89. استفاده از الگوریتم‌های موازی: `for_each`, `transform`
  • 90. استفاده از الگوریتم‌های موازی: `reduce`, `sort`
  • 91. مدیریت استثناها در الگوریتم‌های موازی
  • 92. برداری‌سازی (Vectorization) و نقش آن در `par_unseq`
  • 93. انتخاب سیاست اجرای مناسب
  • 94. اشکال‌زدایی (Debugging) برنامه‌های چندنخی: چالش‌ها
  • 95. استفاده از ابزارهای Thread Sanitizer برای یافتن Data Race
  • 96. استفاده از ابزارهایی مانند Helgrind
  • 97. پروفایل‌سازی (Profiling) و تحلیل عملکرد برنامه‌های همزمان
  • 98. مفهوم اشتراک کاذب (False Sharing) و راه‌های جلوگیری از آن
  • 99. اندازه‌گیری مقیاس‌پذیری (Scalability) و شناسایی گلوگاه‌ها
  • 100. بهترین شیوه‌ها و اشتباهات رایج در برنامه‌نویسی همزمان
اپلیکیشن آموزشی اندروید
یادگیری هوشمند، همیشه همراه شما
فلش‌کارت‌های آموزشی را در یک محیط فارسی، ساده و کاربردی مرور کنید؛ پاسخ‌های خود را بسنجید و پیشرفت یادگیری‌تان را دنبال کنید.
مطالعه آفلاین محیط فارسی و راست‌چین ویژه اندروید
فلش‌کارت آموزشی؛ روشی کاربردی برای مرور مطالب

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

📴
یادگیری بدون اینترنت مداوم
پس از نصب و در دسترس بودن محتوای دوره، فلش‌کارت‌ها را در زمان و مکان دلخواه مرور کنید.
🗂️
انواع محتوای آموزشی
از نکته‌های آموزشی تا پرسش‌های چهارگزینه‌ای و پرسش‌وپاسخ، مطالب را متناسب با نیاز خود مرور کنید.
📊
ارزیابی میزان یادگیری
پاسخ‌های درست و غلط خود را ثبت کنید و آمار عملکردتان را به تفکیک نوع محتوا ببینید.
🎯
مرور هدفمند فصل‌ها
فصل‌های موردنظر را انتخاب کنید و با استفاده از گزینه انتخاب همه، مرور فصل‌های مرورنشده را در اولویت قرار دهید.
انواع فلش‌کارت‌های قابل مرور

محتوای آموزشی در قالب‌های متنوع ارائه می‌شود تا هم برای یادگیری مفاهیم جدید و هم برای تثبیت آموخته‌ها قابل استفاده باشد.

💬
نکته‌های خودمانی
یادگیری ساده و روان
📘
نکته‌های رسمی و کتابی
مرور دقیق مفاهیم
📝
پرسش‌های چهارگزینه‌ای
سنجش آموخته‌ها
❓
پرسش‌وپاسخ
تمرین یادآوری پاسخ
🎓
درسنامه
مرور محتوای آموزشی
امکانات مرور و ارزیابی
حرکت ساده بین کارت‌ها
استفاده از دکمه‌های قبلی و بعدی و مشاهده نوار پیشرفت برای دنبال کردن روند مرور.
مشاهده پاسخ و توضیحات
برگرداندن کارت برای نمایش پاسخ و توضیحات در قالب‌هایی مانند تست و پرسش‌وپاسخ.
تنظیم اندازه فونت
انتخاب اندازه مناسب نوشته‌ها برای تجربه مطالعه راحت‌تر.
نمایش فرمول‌های ریاضی
پشتیبانی از نمایش صحیح فرمول‌ها و روابط ریاضی مبتنی بر LaTeX.
ثبت نتیجه و گزارش آماری
علامت‌گذاری هر پاسخ به‌صورت درست یا غلط و مشاهده تعداد و درصد موفقیت برای انواع محتوا.
طراحی‌شده برای مطالعه روزمره
  • رابط کاربری فارسی و راست‌چین با فونت وزیر.
  • تم روشن و تیره مطابق تنظیمات سیستم.
  • صفحه‌بندی ساده برای انتخاب دوره و شروع مرور.
  • نمایش تعداد دفعات مرور هر فصل.
  • انتخاب چند فصل برای مرور هم‌زمان.
  • امکان تمرکز بر فصل‌هایی که هنوز مرور نشده‌اند.
مناسب برای چه کسانی است؟

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

توجه: محتوای آموزشی و تعداد فلش‌کارت‌ها به دوره انتخاب‌شده بستگی دارد. محتوای دوره پس از نصب، درون برنامه قابل استفاده است؛ با این حال، دریافت اولیه اپلیکیشن و به‌روزرسانی‌های احتمالی ممکن است به اینترنت نیاز داشته باشند.
گالری تصاویر اپلیکیشن‌ها
محیط واقعی اپلیکیشن‌های آموزشی ما
تصاویر زیر، نمونه‌هایی از محیط واقعی اپلیکیشن‌های آموزشی ما هستند و قالب کلی، سبک طراحی و شیوه نمایش محتوای آموزشی در این برنامه‌ها را نشان می‌دهند.
نگاهی به فضای داخل برنامه
تصویر محیط اپلیکیشن آموزشی ۱
نمای اپلیکیشن ۱
تصویر محیط اپلیکیشن آموزشی ۲
نمای اپلیکیشن ۲
تصویر محیط اپلیکیشن آموزشی ۳
نمای اپلیکیشن ۳
تصویر محیط اپلیکیشن آموزشی ۴
نمای اپلیکیشن ۴
تصویر محیط اپلیکیشن آموزشی ۵
نمای اپلیکیشن ۵
تصویر محیط اپلیکیشن آموزشی ۶
نمای اپلیکیشن ۶
تصویر محیط اپلیکیشن آموزشی ۷
نمای اپلیکیشن ۷
تصویر محیط اپلیکیشن آموزشی ۸
نمای اپلیکیشن ۸
تصویر محیط اپلیکیشن آموزشی ۹
نمای اپلیکیشن ۹
تصویر محیط اپلیکیشن آموزشی ۱۰
نمای اپلیکیشن ۱۰
تصویر محیط اپلیکیشن آموزشی ۱۱
نمای اپلیکیشن ۱۱
نکته مهم درباره تصاویر
این تصاویر نمونه‌ای از قالب و سبک طراحی اپلیکیشن‌های آموزشی ما هستند. اپلیکیشن ارائه‌شده نیز از همین رویکرد طراحی و نمایش محتوای آموزشی پیروی می‌کند؛ جزئیات ظاهری و امکانات قابل مشاهده ممکن است متناسب با نوع دوره و بخش مورد استفاده متفاوت باشد.
تگ‌ها: C# C++ concurrency C++ multithreading Concurrency concurrency concepts Multithreading multithreading in C++ Threading in C++ آموزش C++ برنامه نویسی C++ برنامه نویسی همزمان پردازش موازی چندنخی مفاهیم برنامه نویسی

نظرات

هنوز نظری ثبت نشده است.

وارد شوید تا نظر ثبت کنید.