MJB_Khorasani
6 سال پیش توسط MJB_Khorasani مطرح شد
3 پاسخ

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

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

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

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


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 6 سال پیش مطرح شد
0

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


MJB_Khorasani
@m.jawad.b.afghanistany 6 سال پیش مطرح شد
0

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


سید عماد آرمون
تخصص : برنامه نویس فول استک جاوا اسکر...
@emit 4 سال پیش مطرح شد
0

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام