توسعه نرم‌افزار

Task، async و await: مسیر کار غیرهمگام از شروع تا نتیجهمنتشر شده در

مسیر متدی را دنبال می‌کنیم که به پاسخ HTTP نیاز دارد: درخواست را شروع می‌کند، متن پاسخ را می‌گیرد و آن را به نتیجه تبدیل می‌کند. تسک درخواست HTTP و تسک خود متد، هرکدام بخش متفاوتی از این کار را نشان می‌دهند.

می‌بینیم await هنگام انتظار چه می‌کند، خطا و لغو چگونه به فراخواننده می‌رسند و متد پس از آماده شدن پاسخ کجا ادامه پیدا می‌کند.

مهندسی توسعه نرم‌افزار #csharp #dotnet #async

ادامه مطلب ...

Async، concurrency و parallelism یکی نیستندمنتشر شده در

async، concurrency و parallelism شبیه هم به نظر می‌رسند، اما به سه مسئله‌ی متفاوت جواب می‌دهند. اولی درباره‌ی انتظار است، دومی درباره‌ی پیش بردن چند کار، و سومی درباره‌ی تقسیم محاسبه میان هسته‌ها.

وقتی این تفاوت را روشن کنیم، انتخاب ساده‌تر می‌شود. برای انتظار I/O سراغ async می‌رویم؛ برای محاسبه‌ی سنگین CPU فقط وقتی parallelism لازم است که واقعاً اندازه‌گیری گلوگاه را نشان دهد.

مهندسی توسعه نرم‌افزار #csharp #dotnet #async #concurrency #parallelism

ادامه مطلب ...

چرا برنامه‌نویسی async وجود دارد؟منتشر شده در

بخش زیادی از کار برنامه، منتظر ماندن برای شبکه، پایگاه‌داده یا فایل است؛ کارهایی که زمان تمام شدنشان دست برنامه نیست. async نمی‌گذارد این انتظار، رابط کاربری یا رسیدگی به درخواست‌های دیگر را متوقف کند.

تأخیر شبکه یا پایگاه‌داده با async ناپدید نمی‌شود. تفاوت در این است که برنامه هنگام انتظار بی‌کار نمی‌ماند و می‌تواند سراغ کاری برود که همین حالا آماده‌ی انجام است.

مهندسی توسعه نرم‌افزار #csharp #dotnet #async

ادامه مطلب ...