در برنامهنویسی ناهمگام، شروع یک عملیات زمانبر الزاماً اجرای جریان اصلی برنامه را تا پایان آن متوقف نمیکند. برنامه میتواند هنگام انتظار برای شبکه یا دیسک، کار دیگری انجام دهد.
Async به معنی اجرای موازی نیست. هدف اصلی جلوگیری از بلاک شدن غیرضروری جریان اجراست و مدیریت خطا، لغو عملیات و ترتیب تکمیل وظایف اهمیت دارد.
این مفهوم در یک پروژه واقعی
در برنامه Async، درخواست شبکه میتواند منتظر بماند و Event Loop کار دیگری انجام دهد. Async با چندریسمانی یا Parallelism یکسان نیست.
برای مثالها و توضیحات بیشتر، تفاوت Concurrency، Parallelism و Async را در وبلاگ باورژن بخوانید.
آسنکرون در برابر ترد
در برنامه ناهمگام، یک عملیات I/O میتواند بدون بلاک کردن کل جریان کنترل منتظر بماند. این مدل لزوماً به معنی اجرای موازی روی چند هسته نیست. باید Cancellation، Timeout و مدیریت Exception در Future یا Promise روشن باشد.