求教node高并发中 变量是否会互相污染?
假设我有一个高并发的socket服务 在某次请求的回调中将传递来的消息体存入变量 let data = balabala… 在高并发情况下 来自多个不同请求的data会不会互相污染? 请赐教……
3 回复
var i=0;
var server = require('http').createServer(function(req, res) {
var j=0;
res.writeHead(200,{"Content-Type":" text/plain;"});
var client=req.url.split("?")[1].split("=")[1];
if(client ==2){
i++;
j--;
}else {
i--;
j++;
}
res.end(" i:"+i+" j:"+j);
console.log(" i:"+i+" j:"+j);
});
server.on("listening",function(){
console.log("listen 3000");
});
server.listen(3000);
开两个命令窗口 一个用 ab -n 10000 -c 100 http://localhost:3000/?client=1 另一个用 ab -n 10000 -c 100 http://localhost:3000/?client=2 同时敲回车,就知道结果了
相互污染…没有这个说法, 与 PHP 不同, 所有请求公用一个进程, 同一份全局变量… 至于你说在一个 function scope 赋值一个变量, 每次都会创建的好伐, Node.js 单线程, 指的是执行 js 部分是单线程的, so 不会
@magicdawn 的确是 谢谢……