node.js机制

作者: 激情的狼王 | 来源:发表于2017-07-24 13:09 被阅读0次

Nodejs自己说是是单线程并且实现异步IO操作,只看上一句话就知道肯定是扯淡;那这个家伙是怎么实现的呢?

最底层,支持Nodejs运行的关键: V8 引擎:用来解析、执行javascript代码的运行环境。 libuv: 提供最底层的IO操作接口,包括文件异步IO的线程池管理和网络的IO操作,是整个异步IO实现的核心!这部分由C/C++编写,在源码的deps目录下可以看到。

正是这部分,Nodejs中许多异步方法在具体的实现时(NodeJs底层封装了Libuv,它提供了线程池、事件池、异步I/O等模块功能,其完成了异步方法的具体实现),内部均采用了多线程机制。

但是,只有用户的js代码全部执行完后,nodejs才调用libuv的事件循环入口函数uv_run(),即回调函数才有可能被执行。所以,如果主线程的js代码调用了阻塞方法,那么整个事件轮询就会被阻塞,事件队列中的事件便得不到及时处理

不适合CPU密集型应用;因为此时CPU会被长时间占用,被阻塞的线程会全部无法处理。将会导致CPU时间片不能释放,使得后续I/O无法发起;

结论:

1.node适合做I/O密集型,密集的意思是一个请求里有多个并行的i/o,并不是这个系统大部分是I/O请求

2.由于node主方法是单线程,所以除了I/O外的代码量越少越好,否则将失去意义

2.由于node主方法是单线程,所以除了I/O外的代码量越少越好,否则将失去意义

相关文章

  • 事件处理机制

    Node.js事件触发对象有哪些方法? 详细讲讲Node.js事件机制是怎样的? Node.js事件机制和Java...

  • Node.js 模块机制

    Node.js 模块机制 Node.js 模块机制采用了 Commonjs 规范,弥补了当前 JavaScript...

  • Node.js快刀篇

    Node.js概览 - Node.js大俗话,环境的安装和开发环境布署。 Node.js基础 - 事件机制和事件环...

  • 深入NodeJS的模块机制

    Node.js 模块的实现 之前在网上查阅了许多介绍 Node.js 的文章,可惜对于 Node.js 的模块机制...

  • 深入Node.js的模块机制

    1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...

  • 深入Node.js的模块机制(转)

    1 Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着...

  • 2021-04-07each和foreach

    深入浅出 Node.js(三):深入 Node.js 的模块机制 https://www.infoq.cn/art...

  • Node.js EventEmitter类源码浅析

    写在最前 本次尝试浅析Node.js中的EventEmitter模块的事件机制,分析在Node.js中实现发布订阅...

  • Node.js 的 events 模块

    Node.js 没有浏览器的事件冒泡、事件捕获机制。 events 模块是 Node.js 基础及重要的模块, 只...

  • Node.js核心入门(二)

    目录:Node.js核心入门(一) 全局对象 常用工具 事件机制 Node.js核心入门(二) 文件系统访问 HT...

网友评论

    本文标题:node.js机制

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