4 ms·
Ok, so it is opposite in nodejs? There's a single JS thread but as soon as it performs any async IO ( which is the only IO that one should be performing in node
by notyourday 7y ago
Ok, so it is opposite in nodejs? There's a single JS thread but as soon as it performs any async IO ( which is the only IO that one should be performing in node ), that IO creates a thread servicing that IO request. In addition to that, if one is crazy enough to run long computational operations there's setTimeout(), setImmediate() and process.nextTick() and friends.
Though I would say it doing any real compute work inline rather than farming it out to workers is a boneheaded idea regardless of the language used.
- orisho 7y agoAFAIK there is only ever just one thread (that runs user code). setTimeout, etc are all also invoked by the event loop. I can vaguely recall (but it's 1AM so I didn't verify - take with a grain of salt) that nodejs uses an a thread pool for IO, but I guess that's only for IO for which there is no async API, otherwise that would be wasteful. I imagine a quick search about the event loop and said thread pool would yield better researched answers :)
- bernawil 7y agoNodejs is single process, single thread and single core. Chrome used to run different tabs as threads of a process but that ended since Spectre and Meltdown. Back to single process since then. async IO creates a thread servicing that IO request Nope. The event is a single FIFO queue implemented with libuv. It differentiates between sync and async function and basically goes around the queue running synchronous functions to completion every time it find one and async ones for a set time before switching to next one.
- notyourday 7y ago> Nodejs is single process, single thread and single core. ps -eLf disagrees: $ ps -eLf|grep node deploynode 16438 16173 16438 0 11 00:21 pts/6 00:00:01 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16439 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16440 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16441 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16442 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16443 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16444 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16445 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16446 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16447 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16438 16173 16448 0 11 00:21 pts/6 00:00:00 /opt/bin/node node-le-manager-api 3550 deploynode 16579 8353 16579 0 1 00:27 pts/4 00:00:00 grep node
- dragonwriter 7y ago> Chrome used to run different tabs as threads of a process but that ended since Spectre and Meltdown. Back to single process since then. Chrome supports several different process models, apparently, but as Spectre/Meltdown (as well as future renderer and UXSS bugs) mitigation it now by default runs a minimum of one process per site/origin (site isolation). See https://www.chromium.org/developers/design-documents/process-models#TOC-Process-per-tab https://www.chromium.org/developers/design-documents/process... and https://www.chromium.org/Home/chromium-security/site-isolation https://www.chromium.org/Home/chromium-security/site-isolati...