Node.js 实际上创建了多少个线程

Node.js 实际上创建了多少个线程

Node.js是一个跨平台 JavaScript 运行环境,可用于执行和实现服务器端程序。Node支持异步代码处理,这使我们得出它是一个单线程平台的结论。让我们详细讨论一下Node是单线程的含义以及为什么要采用这种方法。

Node的早期开发: 在Node最初开发时,它遵循每个请求一个线程的范例。这意味着每当用户向服务器发出请求,或者从数据库发出请求…都会创建一个单独的线程来完成该请求。这种方法的问题是,当请求在I/O操作上花费时间时,会导致与这些线程相关的资源浪费。这也导致执行时间更长,因为这是同步处理。

使用单线程和事件循环的概念: 为了解决这个问题,Node采用了一个单线程系统,其中包括事件循环和异步I/O操作。使用单线程允许Node一次执行一个进程,而那些比通常需要更长时间的进程由Node API和事件循环处理。事件循环使用回调函数来返回正在由Node API处理的函数的输出,任务会继续正常执行直到整个代码被处理完。

Node.js 实际上创建了多少个线程

该方法被认为非常高效,但是该方法也有一个缺点。当我们有很多需要同步处理的CPU密集型任务时,这种方法就不起作用了,因为会花费很长时间并阻塞代码。由于JavaScript和Node不适用于CPU任务,这是一个特殊情况,可以通过使用 工作线程 来进行不同的处理。

示例: 让我们考虑一个示例来了解事件循环的工作原理。

// Simple JavaScript Code to show Event 
// loop demonstration for Node 
console.log("Geeks"); 
setTimeout(function cb(){ 
    console.log("Geeks"); 
}, 3000); 
console.log("For");

当我们执行给定的代码时,输出将如下所示。

输出:

Geeks
For
Geeks

该输出的原因是Node API处理setTimeout()函数的执行。因此,超时将继续执行,调用堆栈将继续执行其他异步语句。

因此,总结起来,Node和JavaScript被开发为单线程,这有助于它们的时间效率和内存节省。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程