1197520
不知道理解的对不对。请指点。
最近因为项目需求。刚刚开始看了一些node。看了大师写的深入浅出node。里面提到node的事件循环。 js是单线程,对于阻塞操作,js会封装参数和回调函数,交给底层去处理。 也就是 io线程池。线程池处理完毕会放到一个类似队列里面。然后node的事件循环线程 会去获取这个队列的数据,执行回调。
但是书上面没说事件循环是什么线程在执行的。我也在想这个问题。因为node的js端是单线程的。不需要考虑同步问题,那么得出结论是这个回调必然是node的主线程在执行。 既然是主线程在执行,那么必然主线程就是事件循环线程。而事件循环是个类似while(true)的结构。这样的话主线程就不能做其他事情,就是不停的执行事件循环,这也就是node的回调机制的核心。 这里面其实就是一个问题,node启动的时候,必然要把所有的非回调的代码走一遍,然后就不会再执行其他代码,其他代码必然是在回调函数里面执行。
这个也就是我刚开始不了解的地方。可能很多人应该也不理解, 网上看了有人提问。说http应用的时候,如果主线程忙着去处理客户端连接,怎么还有时间去处理回调。这个其实就是理解的错误。因为处理连接这个不是js主线程代码处理的,主线程只是处理,连接之后的connect回调事件。
以上是我对node事件循环的一点理解。不知道是否靠谱。请高人指点!