我的nodeJS服务器是多线程的吗?

时间:2018-03-06 22:42:34

标签: node.js multithreading request listen

我对nodeJS有疑问(特别是关于版本9)。使用这个项目 - https://github.com/howardchung/jsminer,我正在运行nodeJS服务器,如果这是正确的话。我通过运行

将它旋转到我的命令lien上
node index.js

这是我运行的唯一过程。在" index.js" file,express用于创建要监听的端点,例如

var express = require('express');
var app = express();
...
app.get('/work', function(req, res) {
    console.log("client requested work!");
    //send constructed block to client
    //client mines block
    //when client succeeds, client hits /submit
    res.json({
        result: curr_block
    });
});

如果我打电话

http://localhost:5000/work

同时,一个呼叫被阻止,直到另一个呼叫完成或同时处理它们。换句话说,是否启用了多线程?

1 个答案:

答案 0 :(得分:2)

JavaScript是单线程的。除非您在cluster中创建多个进程,否则它无法利用常规意义上的多个核心。

  

在另一个呼叫完成或同时处理之前,一个呼叫会被阻止

除非您在端点中进行CPU繁重的处理,否则它不会阻止对其他端点的请求。 Node.js构建在non-blocking model

如果您在端点中执行CPU繁重的工作,您可能希望将该任务移动到与Node.js API服务器通信的后台进程中,否则您将冻结您的API。