代码之家  ›  专栏  ›  技术社区  ›  Basj

nodejs是否为每个请求创建一个新线程?[复制品]

  •  0
  • Basj  · 技术社区  · 7 年前

    使用nodejs在请求回调函数中执行长处理任务时,

    handler = function(req, res) {
        // long CPU processing task (non I/O), e.g. compute N digits of Pi 
    }
    
    net.createServer(handler);
    

    var express = require('express');
    var app = express();
    app.get('/', function (req, res) {
        // long processing task
    });
    app.listen(3000);
    

    它仍然是同一个胎面吗(那它是不是堵塞了?)或不是?

    注意:我知道在这里执行长时间的处理任务可能不是很好的做法,但是我很好奇nodejs是如何处理的。

    1 回复  |  直到 7 年前
        1
  •  -1
  •   Gustavo Topete    7 年前

    它不可能创建线程。我引用 here :

    js是一个基于chrome的v8 javascript构建的javascript运行时 发动机。node.js使用事件驱动的非阻塞I/O模型 使其轻巧高效

    所以,简言之,node在管理并发性方面做得太好了。