یه سوال جذابی که همیشه توی مصاحبهها میپرسن اینه که وقتی یه برنامه Node.js رو ران میکنیم، واقعاً چند تا ترد توی سیستمعامل ساخته میشه؟ خیلیها میگن ۱ دونه، یا اگر حرفهایتر باشن میگن با ۴ تای libuv میشه ۵ تا! اما اگر یه اسکریپت ساده نود رو ران کنید و توی لینوکس تردهای اون Process رو بشمارید، میبینید که بین ۷ تا ۱۱ ترد بالا میاد. واقعیت اینه که فقط Event Loop و اجرای کد جاوااسکریپت شما روی ۱ ترد (Main Thread) انجام میشه؛ در کنارش موتور V8 معمولاً ۴ تا ترد بکگراند برای کارهای Garbage Collection و JIT Compilation (بهینهسازی کدها) میسازه، ۱ ترد برای هندل کردن سیگنالها و Inspector بالا میاد، و به محض اینکه اولین عملیات File System یا Crypto رو انجام بدید، ۴ تردِ پیشفرضِ libuv هم بهشون اضافه میشن و جمعاً ۱۱ تا ترد رو تشکیل میدن.
اینو همیشه یادتون باشه که جواب درست اینه که حدود 11 تا ترد nodejs میسازه ! خیلی دیدم توی مصاحبه ها میپرسن و آدما میگن نمیدونیم و برای پوزیشن های سنیور نود جی اس شاید سوال مسخره ای بنظر بیاد ولی خب توی ذهنتون داشته باشین که 11 تردش چ شکلی ساخته میشه قطعا مشخص میکنه که شما از اینترنال nodejs هم کمی باخبرید !
@codehalics | کدهالیک
Post #1214
286
کدهالیک | codehalic از اون طرف توی Node.js که خیلیها فکر میکنن کلاً Single-Thread هست، کتابخونه زیربنایی libuv یک ThreadPool داره که دیفالت فقط ۴ تا ترد برای کارهای سنگین و Blocking مثل File System، عملیات Crypto (مثل bcrypt)، پکیج zlib و dns.lookup در نظر گرفته. حالا اگر ۴…
- ❤ 3
- 🔥 2
- 👍 1