首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >node.js的内部结构。它实际上是如何工作的?

node.js的内部结构。它实际上是如何工作的?
EN

Stack Overflow用户
提问于 2011-12-20 20:26:46
回答 2查看 4.5K关注 0票数 18

也许实现node.js模块的人可以解释在单线程上处理的node.js队列和将由模块执行的阻塞IO操作之间的协议。

我怀疑它是这样的:

  1. node.js线程以闭包的形式注册回调,并将其与某个相关id一起保存。
  2. node.js在模块上调用方法(应执行阻塞IO),并将方法参数和相关id传递给它。
  3. 模块方法剥离线程并在IO时阻塞node.js IO操作完成,模块的线程回调到node.js线程并将结果和相关id传递给它。
  4. node.js线程根据相关id查找存储的回调闭包,并使用模块返回的结果调用它。

<代码>G211

问题1:上面的序列正确吗?

问题2: node.js队列到底是什么?是使用了windows上的epoll、kqueue还是IO完成端口?它是模块通知node.js线程某个IO已经完成的回调机制吗?它怎麽工作?

EN

回答 2

Stack Overflow用户

发布于 2012-08-02 02:44:51

Node.js实际上并没有像您所推测的那样管理这些内容。相反,它依赖于操作系统来完成大部分异步IO。它根据操作系统使用select/epoll/kqueue。“他们”只是发出一个调用,然后操作系统用流、块等回调……就它的事件部分而言,它内置于V8中,它完成与浏览器中相同的将回调绑定到特定事件的所有工作。最后,您可以查看libuv,它是与node一起编写的,现在完全由Joyent维护。它在Github上是开源的,所以如果你真的想要详细信息,你可以浏览代码=D

票数 9
EN

Stack Overflow用户

发布于 2011-12-28 03:08:57

我高度怀疑Node.JS与Twisted走的是同一条路,并且只使用非阻塞IO和greenlet。OS线程在这类事情上似乎效率很低。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8575442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档