node.js表达框架是否为每个客户端连接创建一个新的轻量级进程?

时间:2016-03-03 21:16:41

标签: node.js express

假设此代码在node.js express应用程序内运行。假设两个不同的客户端请求索引资源。称这些客户为ClientA和ClientB。假设ClientA在ClientB之前请求索引资源。在这种情况下,控制台将为ClientA记录值1,控制台将记录ClientB的值2。我的主要问题是:每个客户端请求是否获得自己的轻量级进程,路由器是这些进程之间的共享代码部分,路由器可见的变量但不是路由器的一部分是共享堆,当然每个客户端都有自己的堆?我的子问题是:如果对我的主要问题是肯定的,那么在这个例子中,每个客户端都必须排队等待锁定global_counter才能递增,对吗?

var global_counter = 0;

router.get('/', function (req, res) {

    global_counter += 1;

    console.log(global_counter);        

    res.render('index');

});

1 个答案:

答案 0 :(得分:1)

不。单线程/进程。并发是通过工作队列完成的。将内容放入工作队列的一些方法包括setTimeout()和nexttick()。查看http://howtonode.org/understanding-process-next-tick

一次只能运行一件事,因此无需进行任何锁定。

需要一段时间让你的大脑热身于这个想法。