首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs单线程和webserver

问Nodejs单线程和webserver
EN

Stack Overflow用户
提问于 2013-11-01 14:28:35
回答 1查看 690关注 0票数 0

我是Nodejs平台的新手。据我所知,node使用单线程进行处理。在user服务器的情况下,单个线程如何处理来自多个用户的请求。

我想知道NodeJS是如何处理来自客户端的并发请求的。

EN

回答 1

Stack Overflow用户

发布于 2013-11-01 23:16:16

现在跟我说:异步编程并不一定意味着多线程。

Javascript是一个单线程的运行时--你根本不能在JS中创建新的线程,因为语言/运行时不支持它。

Frank用英语说得很正确(虽然有点生硬):有一个主事件循环来处理应用程序中的事情。因此,“处理此HTTP请求”将被添加到事件循环中,然后在适当的时候进行处理。

当您调用异步操作(例如mysql数据库查询)时,node.js会向mysql发送“嘿,执行此查询”。由于这个查询将花费一些时间(毫秒),node.js使用MySQL异步库执行查询-返回到事件循环并在那里做一些其他事情,同时等待mysql返回给我们。比如处理HTTP请求。

编辑:相比之下,node.js可以简单地等待(什么也不做),等待mysql返回它。这称为同步调用。想象一下,在一家餐厅,你的服务员将你的订单提交给厨师,然后坐下来,在厨师做饭的时候玩弄他/她的拇指。在餐馆里,就像在node.js程序中一样,这样的行为是愚蠢的--你还有其他顾客很饿,需要有人为他们提供服务。因此,您希望尽可能地异步,以确保一个服务员(或node.js进程)能为尽可能多的人提供服务。

编辑完成

Node.js使用C库与mysql通信,所以从技术上讲,这些C库可以派生线程,但在Javascript中,你不能对线程做任何事情。

源How does Asynchronous programming work in a single threaded programming model?

感谢RyanWilcox

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

https://stackoverflow.com/questions/19721885

复制
相关文章

相似问题

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