今天在看node的Event-Loop时遇到了很久以来的疑问,不甚了解;
首先阐述一下我阅读完这两篇博客的收获和问题这是 第一篇:链接描述第二篇:链接描述
很希望有大神能帮忙解惑一下谢谢!
我所理解的event-loop
- 通过javascript调用node的核心模块,将参数和回调函数传入到核心模块。
- 由node binding沟通C/C++,实现数据交互。
- 由node的核心模块将参数和回调函数封装成请求对象,libuv将请求对象推入线程池,由空闲的线程去执行。
- 执行完后将执行结果放到请求对象的result属性上。并发出一个完成通知,然后在libuv的event-loop队列中注册一个回调函数?也就是请求时的回调函数???
- 每次Event-Loop时检查是否有完成了的操作。有就放在观察者队列?
- 然后事件触发时,会去取出(观察者队列中?)之前封装请求对象时的回调函数,并将result当成参数,完成事件的处理?
- 事件循环队列和观察队列不是一个队列 对吧?或者说我概念没理清?
由于深知看懂底层C/C++还有一段路要走,所以希望大咖们帮忙解答一下小弟的疑惑?谢谢(希望答者是真正的明白者!!!再次谢谢)