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

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

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

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

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

نخ موازی

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

نخ موازی

در حالی که کل محتویات later() به عنوان یک ورودی صف حلقه رویداد در نظر گرفته می شود، وقتی به رشته ای فکر می کنیم که این کد روی آن اجرا می شود، در واقع ممکن است ده ها عملیات سطح پایین مختلف وجود داشته باشد. به عنوان مثال، پاسخ = پاسخ * 2 نیاز دارد ابتدا مقدار فعلی پاسخ را بارگذاری کنید، سپس 2 را در جایی قرار دهید، سپس ضرب را انجام دهید، سپس نتیجه را بگیرید و آن را در پاسخ ذخیره کنید.

در یک محیط تک رشته ای، واقعاً مهم نیست که موارد موجود در صف thread، عملیات سطح پایین باشند، زیرا هیچ چیز نمی تواند thread را قطع کند. اما اگر یک سیستم موازی دارید که در آن دو رشته مختلف در یک برنامه کار می کنند، به احتمال زیاد می توانید رفتار غیرقابل پیش بینی داشته باشید

در رفتار تک رشته ای جاوا اسکریپت، اگر foo() قبل از bar() اجرا شود، نتیجه این است که a دارای 42 است، اما اگر bar() قبل از foo() اجرا شود، نتیجه a 41 خواهد بود.

اگر رویدادهای JS که داده‌های مشابهی را به اشتراک می‌گذارند به صورت موازی اجرا شوند، مشکلات بسیار ظریف‌تر خواهند بود. این دو لیست از وظایف شبه کد را به عنوان رشته هایی در نظر بگیرید که به ترتیب می توانند کد را در foo() و bar() اجرا کنند و در نظر بگیرید که چه چیزی

اگر دقیقاً همزمان در حال اجرا باشند اتفاق می‌افتد

نتیجه در a 21 خواهد بود.

بنابراین، برنامه‌نویسی رشته‌ای بسیار مشکل است، زیرا اگر اقدامات خاصی برای جلوگیری از وقوع این نوع وقفه/تداخل انجام ندهید، می‌توانید رفتاری بسیار شگفت‌انگیز و غیر قطعی داشته باشید که اغلب منجر به سردرد می‌شود.

جاوا اسکریپت هرگز داده‌ها را در بین رشته‌ها به اشتراک نمی‌گذارد، به این معنی که سطح عدم قطعیت نگران کننده نیست. اما این بدان معنا نیست که JS همیشه قطعی است. قبلاً به یاد داشته باشید، جایی که ترتیب نسبی foo() و bar() دو نتیجه متفاوت (41 یا 42) ایجاد می کند؟

توجه: ممکن است هنوز واضح نباشد، اما همه غیر جبرگرایی بد نیستند.

گاهی بی ربط و گاهی عمدی است.

نتیجه در a 21 خواهد بود.

بنابراین، برنامه‌نویسی رشته‌ای بسیار مشکل است، زیرا اگر اقدامات خاصی برای جلوگیری از وقوع این نوع وقفه/تداخل انجام ندهید، می‌توانید رفتاری بسیار شگفت‌انگیز و غیر قطعی داشته باشید که اغلب منجر به سردرد می‌شود.

جاوا اسکریپت هرگز داده‌ها را در بین رشته‌ها به اشتراک نمی‌گذارد، به این معنی که سطح عدم قطعیت نگران کننده نیست. اما این بدان معنا نیست که JS همیشه قطعی است. قبلاً به یاد داشته باشید، جایی که ترتیب نسبی foo() و bar() دو نتیجه متفاوت (41 یا 42) ایجاد می کند؟

توجه: ممکن است هنوز واضح نباشد، اما همه غیر جبرگرایی بد نیستند. گاهی بی ربط و گاهی عمدی است

حال، بیایید بگوییم که این دو موضوع واقعاً به صورت موازی در حال اجرا هستند. احتمالاً می توانید مشکل را تشخیص دهید، درست است؟ آنها از مکان های حافظه مشترک X و Y برای مراحل موقت خود استفاده می کنند.

اگر مراحل به این صورت اتفاق بیفتد، نتیجه نهایی در a چیست؟

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

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

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

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

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

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

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

لینک کوتاه:
0