我无法想象一个线程中的node.js如何同时执行具有不同代码的两个脚本。例如,我有两个不同的脚本A和B.如果几乎同时有几个客户端请求A和B会发生什么。对于PHP来说这是可以理解的,例如,将创建五个线程来处理A和五个线程来处理B,以及每个请求脚本再次执行。但是Node.js会发生什么?谢谢!
答案 0 :(得分:1)
它使用由libuv
实现的所谓事件循环一个非常简单的解释是:当新事件发生时,它将被放入队列中。时不时地,节点进程将中断执行以处理这些事件。
PHP和节点之间的主要区别在于node.js进程本质上是一个独立的Web服务器(单线程),而PHP是一个在Web服务器(即Apache)中运行的解释器,它负责为每个请求创建新线程。
答案 1 :(得分:0)
Node.js非常适合网络应用程序(如网站),因为在这些应用程序中,大多数工作是node.js异步处理的I / O.
即使两个请求同时到达并且Node.js只有一个执行线程,每个请求(按顺序)将被切换到操作系统进行I / O(通过libuv作为mihai指出)并且只有一个JavaScript执行线程变得无关紧要。随着I / O的完成,JavaScript线程获取结果并返回响应。