1
SPACELAN 2015-12-19 12:53:46 +08:00
1. 这里说的等待应该是事件循环线程等待吧,当就绪队列中没有就绪事件时,线程阻塞等待一段时间而不是马上进入下一次循环,这可以减轻 cpu 压力。但是如果等待的时间里有计时器超时,那么就会造成计时器延迟相应,所以等待时间由计时器周期决定,避免响应延迟
2. 超时后线程被唤醒,进入下一次事件循环 3. 程序没有退出 4. 我不知道,但是两者应该都可以,得从性能上考虑哪种更优 5. 以上都是瞎说的 |
2
cattail 2015-12-19 13:24:43 +08:00 1
This is a good start point: https://github.com/nodejs/node/blob/69b94ec55cb0f8bd90475b5b7dabd57beb7e7dfe/deps/uv/src/unix/core.c#L331
|
3
fds 2015-12-19 14:22:22 +08:00
事件循环就是 while (true) {有事件就回调}
文中的意思是 while (true) {有事件就回调,没事件等 1ms} 楼主用 node 的时候其实完全不用关心这个问题。 |
4
chemzqm 2015-12-19 14:33:58 +08:00
node 本身受限与 javascript 执行效率,而且做的事也很多,所以搞的很复杂,你要真想学习可以尝试用 libuv 自己实现一个事件回调,这样你也不必局限与使用 javascript 。
了解 node 实现里面这些细枝末节的东西我真觉得对多数开发者而言没啥意义,除非你奔着给 node 提 issue |