zoukankan      html  css  js  c++  java
  • nodejs运行机制

    有一天老大忽然问起我这个问题,nodejs运行机制 是怎样的?因自己对nodejs也不是很熟悉,就上网查了一下,得出结果如下;

    1.简介

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。将libuv作为跨平台抽象层,libuv是用c/c++写成的高性能事件驱动的程序库。nodejs的原理类似c/c++系统编程中的epoll

    2.nodejs运行系统

    (1)V8引擎解析JavaScript脚本。

    (2)解析后的代码,调用Node API。

    (3)libuv库负责Node API的执行。它将不同的任务分配给不同的线程,形成一个Event Loop(事件循环),以异步的方式将任务的执行结果返回给V8引擎。

    (4)V8引擎再将结果返回给用户。

    3.事件循环(Event Loop)

    nodejs 执行之后会初始化一个事件循环,执行代码程序(这些程序可能会造成异步调用、定时器或者process.nextTick()),然后开始执行事件循环。

    事件循环的执行循序:

    loop

    每一个模块都是事件循环的一个阶段,每个阶段都有一个要执行的回调的FIFO队列。虽然每个阶段都不同,一般来说,当事件执行到一个阶段,先执行这个阶段特有的操作,然后操作这个阶段的队列,当队列执行完或者达到了回调上限,事件循环就会执行下一个阶段。

    各个阶段介绍

    img

    timers:

    执行 setTimeout() 和 setInterval().的回调

    setImmediate() 的回调在这里执行 当程序执行之后,一般情况下,事件循环会在poll阶段等待连接请求,但是,如果代码中有setImmediate()的回调函数,并且poll阶段空闲,事件循环就会继续执行check阶段,而不会继续在poll阶段等在poll事件

    close callbacks:

    还是没有简明的讲清楚【笑抽】
  • 相关阅读:
    Bootstrap框架
    前端基础之CSS
    前端知识之HTML内容
    python之路----递归函数
    python控制台输出带颜色文字的方法
    ELK搭建<三>:安装Kibana
    ELK搭建<二>:安装ES插件head
    ELK搭建<一>:搭建ES集群
    前端angular使用crypto-js进行加密
    Mac下全局安装yarn
  • 原文地址:https://www.cnblogs.com/qq735675958/p/9220320.html
Copyright © 2011-2022 走看看