عنوان:

‫زیرساخت پیاده سازی Async در دات‌نت به‌زودی تغییر خواهد کرد


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۲/۱۳ ۰۹:۲۵
آدرس: www.dntips.ir
این ویدیو، به یک مفهوم فنی در برنامه‌نویسی به نام "Async 2" می‌پردازد. برای درک بهتر، ابتدا باید با مفهوم "async" یا "ناهمگام" آشنا شویم.

ناهمگامی (Async) در برنامه‌نویسی:
در برنامه‌نویسی، گاهی اوقات وظایفی وجود دارند که زمان زیادی طول می‌کشند، مثلاً دانلود یک فایل از اینترنت یا خواندن اطلاعات از یک پایگاه داده (database). اگر برنامه منتظر بماند تا این وظایف تمام شوند، ممکن است برای مدتی طولانی "مسدود" شود و به کاربر پاسخ ندهد. ناهمگامی به برنامه اجازه می‌دهد تا این وظایف طولانی را در پس‌زمینه انجام دهد و در عین حال به سایر کارها رسیدگی کند.

Async 1 و مشکل آن:
در نسخه‌های قبلی، وقتی از کلمه کلیدی "async" در زبان برنامه‌نویسی #C استفاده می‌کردیم، کامپایلر (compiler) کدهای ما را به یک "ماشین حالت" (state machine) پیچیده تبدیل می‌کرد. این ماشین حالت، وظیفه مدیریت وضعیت برنامه را در حین انجام وظایف ناهمگام بر عهده داشت. اما این تبدیل، پیچیدگی‌هایی را به همراه داشت و ممکن بود باعث کاهش کارایی برنامه شود.

Async 2 و راه حل آن:
"Async 2" یک آزمایش در دات‌نت (dotNet) است که هدف آن بهبود عملکرد ناهمگامی است. ایده اصلی این است که به جای اینکه کامپایلر کدهای ما را به ماشین حالت تبدیل کند، این وظیفه به "مفسر به موقع" (JIT یا Just-In-Time compiler) واگذار شود.

نحوه کار Async 2:
  1. کدهای ساده‌تر: وقتی از "async" در Async 2 استفاده می‌کنیم، کامپایلر کدهای ما را به یک زبان میانی (IL یا Intermediate Language) تبدیل می‌کند که بسیار شبیه به کدهای اصلی ما است. دیگر خبری از ماشین حالت پیچیده نیست.
  2. وظیفه JIT: مفسر JIT، که وظیفه تبدیل کدهای IL به کدهای قابل اجرا توسط پردازنده را بر عهده دارد، مسئولیت مدیریت وضعیت برنامه را در حین انجام وظایف ناهمگام بر عهده می‌گیرد.
  3. بهینه‌سازی‌های JIT: مفسر JIT می‌تواند بهینه‌سازی‌هایی مانند "درون‌خطی‌سازی" (inlining) را انجام دهد که می‌تواند باعث افزایش سرعت اجرای برنامه شود.

مزایای Async 2:
  • کدهای ساده‌تر: کدهای تولید شده توسط کامپایلر ساده‌تر و قابل فهم‌تر هستند.
  • عملکرد بهتر: به دلیل بهینه‌سازی‌های JIT، عملکرد برنامه ممکن است بهبود یابد.
  • انتقال مسئولیت: مسئولیت مدیریت وضعیت از کامپایلر به JIT منتقل می‌شود.

نکته مهم:
"Async 2" یک کلمه کلیدی جدید یا یک ویژگی زبانی جدید نیست. بلکه یک تغییر در نحوه کامپایل و اجرای کدهای ناهمگام است.

اصطلاحات کلیدی:
  • کامپایلر (Compiler): برنامه‌ای که کدهای زبان برنامه‌نویسی را به زبان ماشین تبدیل می‌کند.
  • مفسر به موقع (JIT یا Just-In-Time Compiler): برنامه‌ای که کدهای زبان میانی را در حین اجرای برنامه به کدهای قابل اجرا تبدیل می‌کند.
  • زبان میانی (IL یا Intermediate Language): یک زبان سطح پایین که بین زبان برنامه‌نویسی و زبان ماشین قرار دارد.
  • ماشین حالت (State Machine): یک مدل ریاضی از محاسبات است که می‌تواند در یکی از تعداد محدودی از حالت‌ها باشد.
  • درون‌خطی‌سازی (Inlining): یک تکنیک بهینه‌سازی که در آن کدهای یک تابع به جای فراخوانی، مستقیماً در محل فراخوانی قرار می‌گیرند.



مشاهده مطلب اصلی