1
jswh 2015-09-28 17:26:54 +08:00
单线程
|
3
int64ago 2015-09-28 17:29:06 +08:00
底层是多线程的,只是在 JavaScript 这一层才是单线程的
|
4
jswh 2015-09-28 17:29:38 +08:00
http://blog.getify.com/promises-part-1/这系列文章的第一部分解释了 js 引擎单线程并发的原理,讲得挺清楚的
|
5
wuliao49 2015-09-28 17:56:03 +08:00
3 楼是对的。不分青红皂白的说 NODE 就是单线程的朋友进误区了
|
6
joyee 2015-09-28 18:03:12 +08:00
Node.js 里 JavaScript 代码的执行是单线程的,但是在底层无论是 V8 还是 libuv 都不是,比如 V8 是一个线程做编译执行一个线程做优化几个线程负责 GC 还有线程负责 profiling 找 JIT 目标, libuv 有线程池配合 epoll 之类做 I/O 多路复用,还有其他部分也是……
|
8
joyee 2015-09-28 20:18:30 +08:00
@jswh JavaScript 本身跟事件循环没太大关系的,你在 ECMAScript 的 spec 里是看不到相关的东西的,同理你在 V8 里也找不到类似什么 setTimeout 之类的东西……浏览器里的事件循环属于 BOM , Node 里的事件循环是包装了 libuv 而已, libuv 是有线程池的
|
9
lcj2class 2015-09-29 22:53:22 +08:00
|
10
we 2015-09-30 20:07:16 +08:00
|
11
darluc 2015-09-30 23:35:02 +08:00
9 楼的图不错哦
|