node.js is developed in C. It is the JS running platform (running environment). Its syntax is javascript, but the difference is that it runs on the server. Evidence: The source code of node is on the GitHub website. Many files ending with the .cc suffix in the src folder of the project root directory have the word class in them (C has class but C does not)
Node.js does not create a new thread for each client connection, but only uses one thread. When a user connects, an internal event is triggered. Through non-blocking I/O and event-driven mechanisms, the Node.js program is macroscopically parallel. Using Node.js, a server with 8GB of memory can handle the connections of more than 40,000 users at the same time.
Since Node.js uses a non-blocking I/O mechanism, after executing the code that accesses the database, it will immediately switch to executing the subsequent code, and place the processing code for the database return result in callback function, thus improving the execution efficiency of the program.
When an I/O is completed, the thread performing the I/O operation will be notified in the form of an event, and the thread will execute the callback function of this event. In order to handle asynchronous I/O, the thread must have an event loop, constantly checking whether there are unhandled events, and processing them in turn.
In Node, when the client requests to establish a connection, submit data and other behaviors, corresponding events will be triggered. In Node, only one event callback function can be executed at a time, but in the middle of executing an event callback function, you can switch to processing other events (for example, a new user connects), and then return to continue executing the original event. Callback function, this processing mechanism is called the "event loop" mechanism.
The bottom layer of Node.js is C (V8 is also written in C). Nearly half of the underlying code is used for the construction of event queues and callback function queues. Using event-driven to complete server task scheduling is something only a genius can think of. The dance on the tip of the needle, with one thread, takes on the mission of handling a lot of tasks.
What kind of applications is Node.js suitable for developing?
Good at I/O, not good at calculation. Because Node.js is best at task scheduling, if your business involves a lot of CPU calculations, it actually means that this calculation blocks the single thread, and it is not suitable for Node development.
Node.js is very suitable when the application needs to handle a large amount of concurrent I/O and does not need to perform very complex processing inside the application before sending a response to the client. Node.js is also very suitable for working with web sockets to develop real-time interactive applications with long connections.
Node.js is not an independent language. Unlike PHP, JSP, Python, Perl, and Ruby, which are both languages and platforms, Node.js uses JavaScript for programming and runs on a JavaScript engine. (V8).
The above is the detailed content of What is the underlying language of node.js?. For more information, please follow other related articles on the PHP Chinese website!