我对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
同时,一个呼叫被阻止,直到另一个呼叫完成或同时处理它们。换句话说,是否启用了多线程?
答案 0 :(得分:2)
JavaScript是单线程的。除非您在cluster中创建多个进程,否则它无法利用常规意义上的多个核心。
在另一个呼叫完成或同时处理之前,一个呼叫会被阻止
除非您在端点中进行CPU繁重的处理,否则它不会阻止对其他端点的请求。 Node.js构建在non-blocking model。
上如果您在端点中执行CPU繁重的工作,您可能希望将该任务移动到与Node.js API服务器通信的后台进程中,否则您将冻结您的API。