حلقه رویداد چیست؟
حلقه رویداد چیست؟
یک حلقه به طور مداوم در حال اجرا وجود دارد که با حلقه while نشان داده می شود، و هر تکرار این حلقه یک “تیک” نامیده می شود. برای هر تیک، اگر رویدادی در صف منتظر باشد، حذف و اجرا میشود. این رویدادها فراخوانی عملکرد شما هستند.
مهم است که توجه داشته باشید که setTimeout (..) پاسخ تماس شما را در صف حلقه رویداد قرار نمی دهد. کاری که انجام می دهد تنظیم تایمر است. هنگامی که تایمر منقضی می شود، محیط تماس شما را در حلقه رویداد قرار می دهد، به طوری که برخی از تیک های آینده آن را انتخاب کرده و اجرا می کنند.
اگر در آن لحظه 20 مورد در حلقه رویداد وجود داشته باشد، چه؟ پاسخ تماس شما منتظر می ماند. پشت سر بقیه در صف قرار می گیرد — به طور معمول راهی برای جلوگیری از صف و پرش به جلو در صف وجود ندارد. این توضیح می دهد که چرا تایمرهای setTimeout (..) ممکن است با دقت زمانی کامل کار نکنند. به شما تضمین میشود (تقریباً) که پاسخ تماس شما قبل از بازه زمانی که مشخص کردهاید فعال نمیشود، اما بسته به وضعیت صف رویداد، ممکن است در آن زمان یا بعد از آن رخ دهد.
بنابراین، به عبارت دیگر، برنامه شما به طور کلی به تعداد زیادی تکه کوچک تقسیم می شود، که یکی پس از دیگری در صف حلقه رویداد اتفاق می افتد. و از نظر فنی، رویدادهای دیگری که مستقیماً با برنامه شما مرتبط نیستند نیز می توانند در صف قرار بگیرند.
توجه: ما “تا همین اواخر” را در رابطه با تغییر ماهیت محل مدیریت صف حلقه رویداد در ES6 ذکر کردیم.
این بیشتر جنبه فنی رسمی است، اما ES6 اکنون نحوه عملکرد حلقه رویداد را مشخص میکند، به این معنی که از نظر فنی به جای محیط میزبانی، در اختیار موتور JS است. یکی از دلایل اصلی این تغییر، معرفی ES6 Promises است که در فصل 3 درباره آن بحث خواهیم کرد، زیرا آنها به توانایی کنترل مستقیم و دقیق بر عملیات زمان بندی در صف حلقه رویداد نیاز دارند (به بحث (0..)setTimeout مراجعه کنید. در بخش “همکاری”).
نخ موازی
ادغام اصطلاحات “ناهمگام” و “موازی” بسیار رایج است، اما آنها در واقع کاملاً متفاوت هستند. به یاد داشته باشید، async در مورد شکاف بین اکنون و بعد است. اما موازی در مورد چیزهایی است که می توانند به طور همزمان رخ دهند.
رایج ترین ابزارها برای محاسبات موازی فرآیندها و رشته ها هستند. فرآیندها و رشته ها به طور مستقل اجرا می شوند و ممکن است به طور همزمان اجرا شوند: در پردازنده های جداگانه یا حتی رایانه های جداگانه، اما چندین رشته می توانند حافظه یک فرآیند واحد را به اشتراک بگذارند.
در مقابل، یک حلقه رویداد، کار خود را به وظایف تقسیم میکند و آنها را به صورت سریالی اجرا میکند و دسترسی موازی و تغییرات در حافظه مشترک را ممنوع میکند. موازی گرایی و «سریالیسم» می توانند در قالب حلقه های رویداد همکاری در رشته های جداگانه وجود داشته باشند.
درهم آمیختن رشته های موازی اجرا و درهم آمیختن رویدادهای ناهمزمان در سطوح بسیار متفاوتی از دانه بندی رخ می دهد.
قوانین ارسال دیدگاه در سایت