是的,CentOS上的Node.js支持多线程。从Node.js 10.5.0版本开始,它已经内置了对多线程的支持,使用了内置的cluster
模块。通过使用cluster
模块,您可以创建多个工作进程,这些进程可以在多个CPU内核之间共享工作负载,从而提高应用程序的性能和可用性。
以下是一个简单的示例,展示了如何使用cluster
模块在CentOS上创建一个多线程的Node.js应用程序:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers for each CPU core
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`Worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// Here, we are using an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello, world!
');
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
在这个示例中,我们首先导入了cluster
、http
和os
模块。然后,我们检查当前进程是否是主进程(cluster.isMaster
)。如果是主进程,我们获取系统的CPU核心数,并为每个核心创建一个工作进程(cluster.fork()
)。最后,我们监听工作进程的退出事件。
在工作进程中,我们创建了一个简单的HTTP服务器,监听8000端口。这样,我们就创建了一个多线程的Node.js应用程序,可以在CentOS上运行。