是的,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上運行。