توضیح مفهوم Event loop و single thread در نود جی اس

7 ماه پیش توسط سید عماد آرمون آپدیت شد
آفلاین
user-avatar
MJB_Khorasani ( 525 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

سلام علیکم
سوالی داشتم: من واقعا مفهوم Event loop رو درک نمی کنم. اگر ممکن است با جزئیات بیشتری توضیح بدهید.
ان چیزی که من متوجه شده ام این است که در نود جی اس ما به ازای هر رویدادی یک callback داریم. وقتی که ان رویداد trigger شد نود callback رو به صف Event loop می فرستد. سپس وقتی نوبت callback شد دستورات callback اجرا می شود. خب اینکه همون blocking شد.

لطفا اگر ممکن است در مورد Event loop رو single thread یک مقاله ی پر ملات بنویسید. تا ما مفهومش رو کاملا درک کنیم. مثال هم بزنید
تذکر: من چند بار این موضوع رو خوندم ولی بازم دقیقا متوجه نمیشم که چجوری نود جی اس سر همین موضوع از بقیه جلو میزنه. منظورم این هست که لطفا توضیحات دقیق همراه با رفرنس دهی و مثال.

چیزی که من متوجه نمیشم: single thread بودن نود جی اس و event loop و صف در event loop است.

آنلاین
user-avatar
حسام موسوی ( 459435 تجربه )
3 سال پیش
تخصص : طراح و برنامه نویس

لینک کوتاه اشتراک گذاری

0

ببینید خیلی ساده event loop یعنی اینکه جاوااسکریپت یک زبان (رویداد محور) هستش رویداد های مثل کلیک کردن روی موس ، یا کلیک روی کیبرد . اینها رو یک event یا رویداد میبینه . حالا این موارد دیفالت هستند که در یک dom وبسایت اتفاق می افتن موارد پیشرفته تری هم از event ها وجود داره .
برای اینکه single thread رو در کنید اول باید درک کنید نخ یا همون thread چی هست . که با سرچ در گوگل بصورت مفصل در موردش توضیح داده شده .
اما single thread امکانی هست که کمک میکنه ما عملیات های مختلفمون رو بدور از امکاناتی برای async کردن به راحی در node به شکل async انجام بدیم

آفلاین
user-avatar
MJB_Khorasani ( 525 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

با تشکر
من همین موضوع رو درک نمی کنم که چجوری میشه که :
سی شارپ که یک نخ اصلی دارد و نخ های فرزند را می توان ایجاد کرد تا کارها سریع تر انجام بشه و این نخ ها نیازمند مدیریت دستی هستند.
از
نود جی اس تک نخی عقب بیفته.
شاید حالا عبارت «عقب افتادن» صحیح نباشه ولی در کل منظورم اینه که چجوری میشه نود برای برنامه های real time خیلی قدرتمند عمل می کنه؟؟؟؟
نمی دونم تونستم مشکلم رو بیان کنم یا نه

آفلاین
user-avatar
سید عماد آرمون ( 3119 تجربه )
7 ماه پیش
تخصص : برنامه نویس فول استک جاوا اسکریپت

لینک کوتاه اشتراک گذاری

0

در واقع همین C# هم اگر از هسته های CPU استفاده نکنه یک نوع Blocking هست که با سوئیچ متناوب بین رشته ها کار رو به صورت همزمان پیش میبره
در NodeJS هم CallBack هایی که از Event ها ناشی شدن و توی EventQueue ذخیره شدن، با هر بار خالی شدن Stack به Stack منتقل می شن و عین دستورات جاری اجرا می شن
خلاصه یعنی اینکه Callback های ناشی از Event ها هم مدت کوتاهی Block می مونند تا Stack خالی بشه و امور جاری تمام بشن، بعد اونا اجرا میشن

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.