首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >node处理机制,并发性测试

node处理机制,并发性测试

作者头像
十月梦想
发布2018-08-29 11:43:10
2320
发布2018-08-29 11:43:10
举报
文章被收录于专栏:十月梦想十月梦想

开始学node就了解到三大特点单线程,非阻塞I/O,事件驱动!

下面一个案例看一下非阻塞I/O处理机制,更好了解到node机制!其实三个特点就是一个事情,擅长I/O,擅长任务调度!

案例

//了解node的处理机制,擅长I/O,单线程高并发处理机制
const http=require("http");
const fs=require("fs");
//    产生一个5位随机数(用户id)
// console.log(1)
const server=http.createServer(function(req,res){
    //禁用ico图标的请求
    if(req.url=="/favicon.ico"){
        return ;
    }
    res.writeHead(200,{"Content-Type":"text/plain;charset=utf8"})
    var uid=parseInt(Math.random()*89999)+10000;
    console.log("欢迎用户id:"+uid)
    //异步读取文件
    fs.readFile("./read.txt",{"charset":"utf8"},function(err,data){
        if(err){
            res.end("文件读取失败");
            throw err;
        }else{
            console.log("用户id:"+uid+"读取文件完成");
            // console.log(2)

            res.end();
        }
    })
    // console.log(3)
    // res.end("中文");
})
server.listen(3001,"127.0.0.1");

查看一下console.log的运行顺序

发现结果并不是从上到下1,2,3执行!

原因剖析!

说过node的非阻塞I/O,正常运行,有新的并发过来,继续调度排队,调度完成后继续刚才的排队任务!

下面附上一张高并发的图

发现并不一个个人执行的工作完成后继续下一个,而是在同一时间进行任务调度,调度完成后,进行刚才排队序列继续执行!(善于调度,不善于计算),如果排序的是计算任务,则不能进行调度!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-6-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档