node.js - node.js 如何处理并发的 http 请求?

标签 node.js race-condition

我正在学习 node.js,但我无法找到这个问题的直接答案。如果 HTTP 传入请求几乎同时传入,node.js 如何处理它们?假设在给定时间收到一个 HTTP 请求。因此,全局变量的值可能会改变。然而,几乎同时,另一个请求进来了。为了服务新请求,需要那个全局变量的值,但是第一个请求的代码仍在执行。 Node 对此有何 react ?

最佳答案

Node.js 一个接一个地处理请求。只有一个线程。

但是,如果您查询数据库以获取某些信息并传递回调,则在执行查询时,node.js 可以处理新请求。一旦数据库查询完成,node.js 调用回调并完成处理第一个请求。

编辑:

简单的服务器示例:

var http = require('http');
var numresponses = 0;
http.createServer(function (request, response) {
     res.writeHead(200, {'Content-Type': 'text/plain'});
     res.end('This is response #' + (++numresponses));
}).listen(80);

即使两个请求同时发生,该服务器也会始终打印出请求的编号, Node 将选择第一个被处理的,并且两者将具有不同的编号。

关于node.js - node.js 如何处理并发的 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24934935/

相关文章:

javascript readline 流关闭事件不会被触发

javascript - 有没有办法使用 Sequelize 一次将多个嵌入模型保存在数据库中

c++ - 在并发队列中覆盖

swift - 在 Swift 中从日历中获取提醒

javascript - Redux 如何保证没有竞争条件?

javascript - 为什么将我的 JavaScript 库包装在一个匿名函数中可以修复我的竞态条件?

javascript - socket.io TypeError : socket. on is not a function

javascript - 如何链接两个 JavaScript 对象?

node.js - $geoNear 需要 2d 或 2dsphere 索引,但未找到

python - 链接多个队列时的 Tensorflow 竞争条件