CNode

求教node高并发中 变量是否会互相污染?

问答
HHuangStomach发布于10 年前最后回复10 年前3 回复3727 浏览0 收藏

假设我有一个高并发的socket服务 在某次请求的回调中将传递来的消息体存入变量 let data = balabala... 在高并发情况下 来自多个不同请求的data会不会互相污染? 请赐教……

查看回复

回复 (3)

Y
yakczh#1·10 年前
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 同时敲回车,就知道结果了

M
magicdawn#2·10 年前

相互污染...没有这个说法, 与 PHP 不同, 所有请求公用一个进程, 同一份全局变量... 至于你说在一个 function scope 赋值一个变量, 每次都会创建的好伐, Node.js 单线程, 指的是执行 js 部分是单线程的, so 不会

参与回复
登录后即可参与回复。登录