Libuv and the Thread Pool
The C Engine: Libuv & The Thread Pool
While the V8 engine compiles JavaScript, it has no concept of networking or file systems. Node.js relies entirely on the multi-platform C library, libuv, to bridge the gap to the operating system.
Asynchronous I/O via Kernel
For network sockets and HTTP requests, libuv bypasses threads entirely. It delegates these operations to the native OS kernel mechanisms (epoll on Linux, kqueue on macOS, IOCP on Windows), allowing Node.js to juggle thousands of concurrent sockets efficiently.
The Thread Pool (UV_THREADPOOL)
Because file system operations (FS) and heavy cryptographic algorithms cannot be reliably handed off to non-blocking kernel abstractions on all OS types, libuv utilizes an internal C++ Thread Pool (defaulting to 4 threads). When a developer reads a file asynchronously, Node.js offloads the blocking system call to one of these background threads, keeping the main V8 thread completely unblocked.