به نام خدا
سلام علیکم
پیرو مطلب قبلی در مورد ورکر ها که خبر دادیم رفتیم اومدم کامل ترش کنم. . .
اول از همه یه چیزی بگم که خیلی مهمه . . . node js یه قانون مهم و حیاتی داره میگه که آقا لطفا هرکاری میکنید بکنید ولی حلقه ی رویداد رو (event loop) رو مسدود نکنید تورو به ابلفضل. چکار کنه دیگه بنده خدا. . .
اینو داشته باشین تا یه مثال کوچولو بزنم برا شروع :
فرض کنید چی داریم ؟ داریم دوتا پردازش. یکی سنگین که مثلا ده ثانیه طول میکشه و یکی سبک که مثلا ایکی ثانیه کار جمعه.حالا اگر سیستم مشغول انجام کار سنگینه باشه که ده ثانیه طول میکشه نمیتونه که به اون یکی درخاست کوچولوعه رسیدگی کنه سریعا.دقت کنید گفتم سریعا. ینی در نهایت که کارو میکنه مگر در موارد دیگر ولی خب چون مشغول کار سنگینه هست نمیتونه سریعا کار سبکه رو جمع کنه.
حالا اینجا چی شد؟؟؟ ما اومدیم با این حرکت حلقه ی رویداد(event loop) رو مسدود کردیم که کار بسیار ناپسندیست.
خب ما که میدونیم نود جی اس سینگل ترد(single thread) تشریف دارن و این کارا واسمون گرون تموم میشه.ولی این آیا ینی اینکه ما نباید کارهای سنگین باهاش انجام بدیم؟؟
نه خیر هرگز . . .
نود جی اس ورژن 10.5.0 کانسپت worker thread رو از طریق ماژول worker_threads رو معرفی کرد که خب بعد از ورژن 12 نود جی اس به یک عملکرد پایدار تبدیل شد.
یه تعریف کوچولو هم بگیم از همزمانی به نقل از جناب آقای Rob Pike :
همزمانی (Concurrency) به معنای برخورد همزمان با خیلی چیز میزاست. و در مقابلش موازی گرایی(parallelism) یعنی انجام خیلی کارا به طور همزمان.
خب تا اینجا میدونیم که (حداقل امیدوارم که خوب رسونده باشم که) انجام چندین کار با یک رشته در مقایسه با اجرای آنها به صورت موازی روی رشته های مستقل زمان بیشتری رو میطلبه.
پس اینجای مطلب دیگه وقتشه که جناب worker وارد صحنه بشه و بگه که آقایون شما میتونید کارهای فشرده که هزینه زمانی زیادی دارن رو به من بسپارید و این در حالیه که وظایف نسبتا کوچولو تر روی رشته ی اصلی اجرا می شن. پس دیگه اونا کاری به اینا ندارن. متوجه هستید؟؟؟
یادم باشه در مورد processes and threads هم یه مقاله تهیه بنمایم . . .
بنظرم تا اینجا بسته چون این قصه سر درااااااااز دارد . . . بعد از این دیگه میریم سر وقت کد زدن و ساختن و پرداختن به ورکر های عزیزمون.
من حسینم مرسی ازینکه مقالمو خوندین . . .