1- NodeJS Event Loop Overview
NodeJS is a Single Thread application, which operates on a platform written by
C++. This platform uses multi-thread to carry out tasks at the same time.
The following figure illustrates requests sent to the
NodeJS server from the users side.
Each request from the users side is treated to be an event by the
NodeJS. They is placed into an
Event Queue. The
FIFO (First In First Out) principle, which means that the requests coming first will be handled first.
As an endless loop, it passes the requests to the
thread Pool and each request is registered a
Callback function. When a request is finished handling, the corresponding
Callback function will be called to be executed.
Being a program by
C++ language, it supports multi threads. Therefore, herein, requests will be handled on different threads. The
NodeJS also supports Multi Processes. This means that they can be executed on different cores.
When a request is finished handling. The
NodeJS will call the
Callback function (registered for this request) to execute it.
First basic conclusion: If each connection to
Server opens a Thread . It will take very much memory. This has been proven when you compare
Web Servers deploying
PHP applications). The
Apache uses much more memory than the
NodeJS is similar to the
Nginx in the fact that they use only a Single thread to receive connections from an user, and treat each request of the user as an event.
Second basic conclusion:
I/O activities cost many resources of the system, therefore, the
NodeJS manages use of
I/O activities strictly. So you need to use only
Callback when you execute the duties related to
Basically, many things in the
NodeJS are running in parallel on different threads, but they are managed directly by the
NodeJS, for example,
Thread Pool. What you write is run on a single thread.