也许实现node.js模块的人可以解释在单线程上处理的node.js队列和将由模块执行的阻塞IO操作之间的协议。
我怀疑它是这样的:
<代码>G211
问题1:上面的序列正确吗?
问题2: node.js队列到底是什么?是使用了windows上的epoll、kqueue还是IO完成端口?它是模块通知node.js线程某个IO已经完成的回调机制吗?它怎麽工作?
发布于 2012-08-02 02:44:51
Node.js实际上并没有像您所推测的那样管理这些内容。相反,它依赖于操作系统来完成大部分异步IO。它根据操作系统使用select/epoll/kqueue。“他们”只是发出一个调用,然后操作系统用流、块等回调……就它的事件部分而言,它内置于V8中,它完成与浏览器中相同的将回调绑定到特定事件的所有工作。最后,您可以查看libuv,它是与node一起编写的,现在完全由Joyent维护。它在Github上是开源的,所以如果你真的想要详细信息,你可以浏览代码=D
发布于 2011-12-28 03:08:57
我高度怀疑Node.JS与Twisted走的是同一条路,并且只使用非阻塞IO和greenlet。OS线程在这类事情上似乎效率很低。
https://stackoverflow.com/questions/8575442
复制相似问题