آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

تکمیل تا اجرا

دسته بندی :اخبار سایت 14 مارس 2023 علیرضا بابامرادی 377
همزمانی

تکمیل تا اجرا

به دلیل تک رشته‌ای بودن جاوا اسکریپت، کد داخل foo() (و bar()) اتمی است، به این معنی که وقتی foo() شروع به اجرا کرد، قبل از اینکه کدهای موجود در bar() بتوانند کامل شوند، کل کد آن تمام می‌شود. اجرا کنید یا برعکس به این رفتار «اجرای تکمیل» می گویند

در واقع، زمانی که foo() و bar() کد بیشتری در خود داشته باشند، معنای run-to-completion واضح تر است

از آنجایی که foo() را نمی توان با bar() قطع کرد، و bar() را نمی توان با foo() قطع کرد، این برنامه فقط دو نتیجه ممکن دارد بسته به اینکه کدامیک اول شروع به اجرا کند — در صورتی که threading وجود داشته باشد و عبارات فردی در foo() و bar() را می توان در هم آمیخت، تعداد نتایج ممکن بسیار افزایش می یابد!

قطعه 1 همزمان است (اکنون اتفاق می افتد)، اما تکه های 2 و 3 ناهمزمان هستند (بعدا اتفاق می افتد)، به این معنی که اجرای آنها با فاصله زمانی از هم جدا می شود.

دو نتیجه از یک کد به این معنی است که ما هنوز عدم قطعیت داریم! اما در سطح ترتیب تابع (رویداد) قرار دارد، به جای اینکه در سطح ترتیب بیانیه (یا در واقع سطح ترتیب عملیات عبارت) همانطور که در مورد رشته ها وجود دارد. به عبارت دیگر، قطعی تر از موضوعات است.

همانطور که در رفتار جاوا اسکریپت اعمال می شود، این غیر قطعی بودن ترتیب تابع اصطلاح رایج “شرط مسابقه” است، زیرا foo() و bar() با یکدیگر مسابقه می دهند تا ببینند کدام یک اول اجرا می شود. به طور خاص، این یک “شرایط مسابقه” است زیرا شما نمی توانید به طور قابل اعتماد پیش بینی کنید که a و b چگونه نتیجه خواهند گرفت.

توجه: اگر تابعی در JS وجود داشت که به نوعی رفتار اجرا تا تکمیل را نداشت، می‌توانستیم نتایج احتمالی بیشتری داشته باشیم، درست است؟ به نظر می رسد ES6 دقیقاً چنین چیزی را معرفی می کند (به فصل 4 “ژنراتورها” مراجعه کنید)، اما فعلا نگران نباشید، ما به آن باز خواهیم گشت!

همزمانی

بیایید سایتی را تصور کنیم که فهرستی از به‌روزرسانی‌های وضعیت (مانند فید اخبار شبکه اجتماعی) را نمایش می‌دهد که به تدریج با پیمایش کاربر در فهرست بارگیری می‌شود. برای اینکه چنین ویژگی به درستی کار کند، (حداقل) دو “فرآیند” جداگانه باید به طور همزمان اجرا شوند (یعنی در طول یک پنجره زمانی، اما نه لزوما در یک لحظه).

توجه: ما در اینجا از “فرآیند” در نقل قول استفاده می کنیم، زیرا آنها فرآیندهای واقعی سطح سیستم عامل در مفهوم علوم کامپیوتری نیستند. آنها فرآیندها یا وظایف مجازی هستند که نشان دهنده یک سری عملیات متوالی و منطقی مرتبط هستند. ما به سادگی «فرایند» را بر «وظیفه» ترجیح می‌دهیم، زیرا از نظر اصطلاحی، با تعاریف مفاهیمی که در حال بررسی آن هستیم مطابقت دارد.

اولین “فرآیند” به رویدادهای onscroll (ایجاد درخواست های Ajax برای محتوای جدید) پاسخ می دهد، زیرا هنگامی که کاربر صفحه را بیشتر به پایین اسکرول می کند، فعال می شوند. دومین “فرآیند” پاسخ های Ajax را دریافت می کند (برای ارائه محتوا در صفحه).

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0