آموزش برنامه نویسی چند نخی Multithreading در سی شارپ

تعداد ویدئو 80
زمان دوره 05:12:50
دوبلر مرتضی گیتی
سایت منتشر کننده پرووید

آموزش برنامه نویسی چند نخی Multithreading در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم.

برنامه نویسی موازی (Parallel Programming) چیست؟

در گذشته سیستم های کامپیوتری با داشتن یک تک پردازنده اجرای برنامه های کامپیوتری را به عهده داشتند. بعد از گذشت زمانی، سرعت clock پردازنده ها افزایش یافت و در نتیجه سرعت اجرای برنامه ها بیشتر شد. علاوه بر سرعت بیشتر پردازنده ها، تکنولوژی های دیگر در افزایش سرعت برنامه ها نقش داشتند. (به عنوان مثال قابلیت انجام عملیات اعداد شناور که در پردازنده های دهه 1990 وجود نداشت.)

tpl-architecture

این افزایش سرعت پردازنده ها تا جایی افزایش یافت که در سال 2005 متوقف شد. دلایل مختلفی برای این توقف وجود داشت. راه حل دیگری که به جای افزایش سرعت clock پردازنده ها در نظر گرفته شد، افزودن هسته یا core به پردازنده بود. اگر یک پردازنده دارای دو هسته باشد میتواند به صورت همزمان دو کار را بدون task-switching انجام دهد. بدون شک با افزایش هسته های پردازنده، قدرت محاسباتی آن نیز افزایش پیدا می کند.

پردازنده های چند هسته ای

امروزه دیدن سیستم هایی که دارای پردازنده های تک هسته ای هستند بسیار دشوار شده است! ساده ترین سیستم ها نیز دارای پردازنده هایی با بیش از دو هسته می باشند. از این رو برنامه های نوشته شده نیز باید به سمتی بروند که بتوانند از این قدرت محاسباتی فراهم شده نهایت استفاده را برای ارائه ی یک تجربه ی کاری بهتر به کاربر سیستم داشته باشند. چالش پیش رو نگاه کردن به برنامه نویسی به عنوان یک دنباله ی ترتیبی ست که کدهای نوشته شده را یکی پس از دیگری اجرا می کند. برنامه هایی که بتوانند به صورت همزمان از بیش از یک هسته از پردازنده استفاده کنند را برنامه های موازی و یا Parallel Program می گویند.

برنامه نویسی موازی در دات نت

قبل از دات نت 4 نوشتن برنامه های موازی به دلایل مختلف بسیار دشوار بود. از دات نت 4 به بعد با معرفی Task Parallel Library و فضای نام System.Threading.Tasks نوشتن برنامه های چندنخی بسیار ساده تر از قبل شد.

سرفصل مطالب آموزش ویدئویی برنامه نویسی چند نخی در سی شارپ

  • معرفی برنامه نویسی موازی
  • کد نویسی ترتیبی (Sequential)
  • تجزیه ی برنامه (Task Decomposition – Code Decomposition)
  • چالش های برنامه نویسی موازی
    • همگام سازی (Synchronization)
    • شرایط ریس (Race Condition)
    • بلاکینگ (Blocking)
    • بن بست  (Deadlock)
  • حلقه ی تکرار For و Foreach بصورت موازی و چالش ها و راه حل های مسائل مربوط به موازی سازی در آنها
  • استفاده از کلاس Task برای انجام موازی قسمت های مختلف برنامه
  • استفاده از Parallel.Invoke
  • کنسل کردن زودهنگام الگوریتم های موازی از قبیل حلقه های For و Foreach و Task های موازی
  • استثناها (Exception) های مرتبط با برنامه نویسی موازی
  • Task های تو در تو (Nested)
  • Task های وابسته (Parent – Child)
  • مباحث Continuation برای از سر گرفتن اجرای یک Task پس از تکمیل Task قبلی
  • استفاده از Parallel LINQ برای اجرای موازی دستورات LINQ
  • استفاده از کلاس های Interlock و Monitor و دستور lock برای انجام همگام سازی (Synchronization)
  • استفاده از TaskFactory برای ایجاد Task های موازی
  • دستورات Async و Await برای کنترل کردن اجرای قسمت های موازی برنامه
  • محدود کردن استفاده از هسته های پردازنده توسط برنامه
  • معرفی کالکشن های Thread-Safe (کالکشن هایی که فاقد Race Condition می باشند.)
    • ConcurrentStack
    • ConcurrentQueue
    • ConcurrentBag
  • و بسیاری مباحث دیگر

1 دیدگاه برای آموزش برنامه نویسی چند نخی Multithreading در سی شارپ

  1. مصطفی کاظمی

    بنده دمو رو دیدم و بنظرم صداش واقعا بده

    • پرووید

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

دیدگاه خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دسته های محصولات

افزودن به سبد خرید