عموما زمانیکه میخواهیم تمام وظایف مدنظر، به صورت موازی اجرا شوند، آنها را Task.WhenAll میکنیم . برای مثال 10 هزار درخواست HTTP را به صورت وظایفی، WhenAll میکنیم و ... در این حالت ... سرور ریموت، IP شما را خواهد بست! چون کنترلی بر روی تعداد وظیفهی در حالت اجرای موازی وجود ندارد و یک چنین عملی، شبیه به یک حملهی DDOS عمل میکند! برای مدیریت بهتر یک چنین مواردی، در دات نت 6 متدهای Parallel.ForEachAsync ارائه شدهاند تا دیگر نیازی به است ...
در قسمت قبل دیدیم که انجام کارهای همزمان، با Objectهایی که به اصطلاح Thread Safe نیستند (مانند DbContext) خروجی چندان جالبی ندارد و برای مثال اگر در یک Service یک DbContext را Inject کنیم (مثلا با Constructor injection) و از آن در متدی استفاده کنیم که آن متد یا با TPL یا RX و ... به صورت چندتایی و همزمان اجرا شود، DbContext به مشکل میخورد ؛ یعنی نمیتوان یک وهله از DbContext را بین چند Thread همزمان پردازش موازی، به اشتراک گذاشت. ...
آیا تا به حال لیستی از دیتا داشتهاید که بخواهید بر روی آنها کاری را انجام دهید؟ مثلا لیستی از مشتریان که باید برای تک تک آنها Pdf ای را بسازید، یا لیستی از مشتریان که باید برای تک تک آنها بیمه نامه صادر کنید، یا مثلا لیست اطلاعات بلیطهای قابل فروش را گرفتهاید و برای تک تک آنها میخواهید کمیسیون حساب کنید و ... در اکثر مواقعی کاری که برای تک تک آیتمها قرار است انجام شود، ساده است و با استفاده از یک حلقه foreach کار تمام میشود. ...
پیشنیازها « پشتیبانی از SIMD در دات نت 4.6 » SIMD یا ترجمه آن به فارسی به معنی «تک دستورالعمل و چند داده»، قابلیت آنرا دارد تا بر روی مقادیر عددی به صورت موازی و با استفاده از پردازنده کار کند. اگر بتوانیم ساختار پروژههای خود را به طوری ایجاد کنیم تا بتوانیم از SIMD در پردازشهای خود استفاده کنیم، سرعت انجام فعالیتها، بسیار زیاد افزایش پیدا خواهند کرد؛ به خصوص این امر در حجمهای پردازشی زیاد محسوس خواهد بود. البته مدیریت ...
برای انجام عملیات پرس و جوی LINQ با
استفاده از روش پردازش موازی به راحتی میتوان الحاقیه AsParallel را
به هر دادهای از نوع IEnumerable<T> افزود: var data =
new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// پرس و جوی عادی
var q1 = from i in data select i;
// پرس و جو به شیوه موازی
var q2 = from i in data.AsParallel() select i;الحاقیه .AsParallel() در پرس و جویq2 نسخه موازی LINQ را بر روی متغیر data اجرا میکند و اگر ...