Node.js: Debunking the Single-Threaded Myth

🧵 "Node.js is single threaded" everyone says that. But this is only half of the truth. Yes, Node.js is single threaded in its main execution the Event Loop and your code run on one thread. But using many other things, we can make it behave like a multiprocess or multithreaded system that performs perfectly even for CPU intensive tasks: 1-libuv (the underlying engine) It is the underlying C++ library in Node. Through it we can handle: A)Network I/Os : by dealing with the OS kernel directly So the kernel handles it asynchronously and notifies Node when done, so the main thread never blocks. B)File I/Os and DNS operations : through a thread pool that abstracts our main thread from that heavy load. 2-Event Loop Partitioning: But if the load is heavier than we thought, we need to handle it differently. -We can do partitioning making heavy operations done in multiple phases of the Event Loop so we don't starve any phase. -Using setImmediate(), I can distribute my work across different check phase iterations, so other phases keep running alongside the heavy operation without being starved. 3-Worker Threads & Child Processes Okay but what if the task is even heavier CPU intensive work? -Then we have Node Workers I can make my main thread do some work and offload intensive CPU tasks to other threads. (Yes, other threads just like a multithreading system.) Or we can even use Child Processes to offload work onto entirely different processes, each with their own memory and dedicated everything. So now we get it Node.js is single threaded in its code execution, but we can still make it behave like any concurrent parallel system.  It's not a limitation. It's a deliberate design choice. #nodejs #backend #javascript #SoftwareEngineering

  • No alternative text description for this image

To view or add a comment, sign in

Explore content categories