nodejs工作线程处理什么样的操作?

时间:2015-01-30 17:45:29

标签: node.js

我需要澄清一下nodejs工作线程究竟在做什么。 我发现这个有矛盾的信息。有人说工作线程处理所有IO,其他人说他们只处理阻止posix请求(没有异步版本)。

例如,假设我没有用一些不合理的处理来阻止主循环。我只是从可用模块调用函数并提供回调。我可以看到,如果这需要一些阻塞或计算上昂贵的操作,那么它将被处理为工作线程。但对于某些异步IO,它是从主libuv循环启动的吗?或者它是否传递给工作线程,从那里开始?

此外,当操作系统支持异步模式执行相同操作时,nodejs工作线程是否会启动阻塞(同步)IO操作?是否记录了哪种操作最终会阻塞工作线程更长时间?

我问这个是因为有一个固定大小的工作池,我想避免犯错误。感谢。

1 个答案:

答案 0 :(得分:0)

所有平台上的网络I / O都在主线程上完成。文件I / O是一个不同的故事:在Windows上,它是真正异步和非阻塞的,但在所有其他平台上,同步文件I / O操作在线程池中执行,以实现异步和非阻塞。