coolicer
V2EX  ›  Node.js

node.js 的事件循环,是多线程?

  •  1
     
  •   coolicer · Sep 28, 2015 · 5514 views
    This topic created in 4055 days ago, the information mentioned may be changed or developed.
    跑好之后,再丢给队列吗?
    11 replies  •  2015-09-30 23:35:02 +08:00
    jswh
    jswh
    Sep 28, 2015
    1
    单线程
    coolicer
    coolicer
    OP
    Sep 28, 2015
    2
    @jswh 哭了

    看来我还是不懂 node
    int64ago
    int64ago
    Sep 28, 2015
    3
    底层是多线程的,只是在 JavaScript 这一层才是单线程的
    jswh
    jswh
    Sep 28, 2015
    4
    http://blog.getify.com/promises-part-1/这系列文章的第一部分解释了 js 引擎单线程并发的原理,讲得挺清楚的
    wuliao49
    wuliao49
    Sep 28, 2015
    5
    3 楼是对的。不分青红皂白的说 NODE 就是单线程的朋友进误区了
    joyee
    joyee
    Sep 28, 2015
    6
    Node.js 里 JavaScript 代码的执行是单线程的,但是在底层无论是 V8 还是 libuv 都不是,比如 V8 是一个线程做编译执行一个线程做优化几个线程负责 GC 还有线程负责 profiling 找 JIT 目标, libuv 有线程池配合 epoll 之类做 I/O 多路复用,还有其他部分也是……
    jswh
    jswh
    Sep 28, 2015
    7
    @wuliao49
    @joyee
    楼主问得是事件循环。可能我理解错了,我想说的只是 node 的并发并不是并行。
    joyee
    joyee
    Sep 28, 2015
    8
    @jswh JavaScript 本身跟事件循环没太大关系的,你在 ECMAScript 的 spec 里是看不到相关的东西的,同理你在 V8 里也找不到类似什么 setTimeout 之类的东西……浏览器里的事件循环属于 BOM , Node 里的事件循环是包装了 libuv 而已, libuv 是有线程池的
    lcj2class
    lcj2class
    Sep 29, 2015
    9
    we
    we
    Sep 30, 2015
    10
    darluc
    darluc
    Sep 30, 2015
    11
    9 楼的图不错哦
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4275 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 03:59 · PVG 11:59 · LAX 19:59 · JFK 22:59
    ♥ Do have faith in what you're doing.