美文网首页
node 单线程

node 单线程

作者: LilyLaw | 来源:发表于2019-08-05 09:51 被阅读0次

我们知道node是单线程的,很多朋友对单线程似乎一知半解,即使知道单线程是啥,也不知道具体怎么表现的。
下面用一个简单的小例子,给大家演示一下node单线程在web应用中的表现,直接上代码:

const http = require('http');

let count = 0;
const server = http.createServer((request,response)=>{
    response.write(`${count++}`);
    response.end();
});

server.listen(3000,(error)=>{
    if(error) throw error;
    console.log('成功监听到3000');
});

用node执行,用浏览器访问http://localhost:3000 可以看到类似如下效果:

访问结果

这种情况下是没有阻塞的,所以可以正常运行。下面我们来搞一个阻塞的情况:

const http = require('http');

let count = 0;
const server = http.createServer((request,response)=>{
    response.write(`${count++}`);

    while(true){}

    response.end();
});

server.listen(3000,(error)=>{
    if(error) throw error;
    console.log('成功监听到3000');
});

再用node运行,并用浏览器访问,发现一直处于加载中的状态:


加载中

这是因为执行到while(true){}的时候,会一直在这儿执行,不会向下走了,程序就阻塞在这儿了,所以就加载不出来。

即使我们打开另外一个窗口,还是加载不出来,而这里的while不是异步的,是同步的,因为node是单线程的,所以node无法分出一个线程去执行下面的response.end(),因此就在这里卡死了。

相关文章

  • pm2源码分析

    Node Cluster Nodejs的设计架构和nginx类似,是多进程单线程模型。由于Node单线程的限制,在...

  • Node.js 通过进程、线程优化的性能

    1. node.js 单线程的特点 node.js 以异步非阻塞单线程,作为其执行速度的保障。什么是非阻塞单线程?...

  • node 多进程学习

    node是基于v8引擎单线程运行,这的单线程运行指的是JavaScript代码在单线程上运行,node还有其他的线...

  • 一文浅析 Node.js 单线程高并发原理

    一文浅析 Node.js 单线程高并发原理 Node 并非是真正意义上的单线程,它是主线程 "单线程",通过事件驱...

  • nodejs 事件循环机制总结

    node设计采用了单线程机制,但还可以承载高并发请求是因为node的单线程仅针对主线程来说,即每个node进程只有...

  • nodejs事件循环机制

    node设计采用了单线程机制,但还可以承载高并发请求是因为node的单线程仅针对主线程来说,即每个node进程只有...

  • Node学习指南

    为什么要有Node子进程 node遵循的是单线程单进程的模式,node的单线程是指js的引擎只有一个实例,且在no...

  • 关于node

    1 . Node.js 是单线程吗? 答 : Node.js 虽然是单线程模型,但是基于事件驱动、异步非阻塞模式,...

  • node  进程管理

    前言 node是单线程且支持高并发的脚本语言,node如何能做到单线程不阻塞,基于i/o的操作基本都是异步的,no...

  • node 单线程

    我们知道node是单线程的,很多朋友对单线程似乎一知半解,即使知道单线程是啥,也不知道具体怎么表现的。下面用一个简...

网友评论

      本文标题:node 单线程

      本文链接:https://www.haomeiwen.com/subject/zjvjdctx.html