در دنیای امروز، عملا هر CPU دارای پردازندههای چند هسته ای است؛ اما اگر برنامه شما، برنامه نویسی موازی را پیاده سازی نکرده باشد، نمیتواند از حداکثر ظرفیت پردازش واقعی ارائه شده توسط سخت افزار استفاده کند. کتاب برنامه نویسی موازی با سی شارپ 8 و NET Core 3، نحوهی نوشتن برنامههای مدرن بهینه و با کارایی بالا با C# 8 و NET Core 3. را به شما نشان میدهد.
در این کتاب، چگونگی پیاده سازی چند ریسمانی و همزمانی را برای ساختن برنامههای بهینه که از قدرت پردازندههای چند هسته استفاده میکنند را یاد خواهید گرفت. با شروع از مبانی threading و همزمانی، شما درباره ساختمان دادههای NET Core. که parallelism را پشتیبانی میکنند یاد خواهید گرفت. این کتاب نحوه برنامه نویسی کردن asynchronous در #C و چگونگی تشخیص و رفع اشکال موثر کد موازی را ارائه میدهد. شما در مورد سرور جدید Kestrel و تفاوت مدل عملیاتی IIS و Kestrel اطلاعات کسب خواهید کرد. همچنین شما درباره شیوههای موثری مثل توسعه آزمون محور و چگونگی آزمون واحد کدهای موازیتان یاد خواهید گرفت. در انتهای این کتاب، شما درک عمیقی از مفاهیم اصلی همزمانی و asynchrony برای ایجاد برنامههای پاسخگو دارید که CPU intensive نیستند.
سخت افزارهای جدید به طور فزاینده ای همروند (parallel) شده اند، بنابراین زبانهای برنامه نویسی باید از همزمانی پشتیبانی کنند یا محکوم به مرگ هستند. نقل قولی از استیو جابز: راهی که شرکتهای ساخت پردازشگر در پیش گرفته اند این هست که هستههای بیشتر و بیشتر اضافه کنند، اما کسی نمیداند که چگونه برای آنها برنامه بنویسید. منظورم دو، بله؛ چهار، نه واقعا؛ هشت؛ کلا فراموشش کنید.
خب استیو اشتباه میکرده است؛ الان ما میدانیم که چگونه برای پردازشگرهای چند هسته ای برنامه بنویسیم. ما برنامه هایمان را با Erlang مینویسیم و هرچقدر که بر تعداد هستهها افزوده شود برنامهی ما نیز سریعتر از قبل کار میکند.
Erlang از همان ابتدا برای برنامه نویسی سیستمهای همزمان، توزیع پذیر، تحمل پذیر بودن خطا (fault-tolerant)، مقیاس پذیر (scalable)، نرم و بلادرنگ طراحی شده بود. سیستمهای نرم بلادرنگ به مانند سیستمهای ارتباطات تلفنی، سیستمهای بانکی و ... که در آنها تعدا دفعات پاسخ گویی سریع بسیار با اهمیت است. سیستمهای مبتنی بر Erlang در مقیاس عظیمی مستقر شده اند و بخشهای قابل توجهی از شبکه ارتباطات تلفن همراه دنیا را کنترل میکنند.
اگر مشکل شما همزمانی هست، اگر در حال ساخت سیستم چند
کاربره هستید و یا اگر در حال ساخت سیستمی هستید که با زمان سرو کار دارد، استفاده
از Erlang میتواند بخش زیادی از کارهای شما را کم
کند، چرا که Erlang فقط برای
ساخت چنین سیستمهای طراحی شده است.