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

Nodejs多线程与nodejs单线程
EN

Stack Overflow用户
提问于 2016-02-15 08:33:22
回答 2查看 1.6K关注 0票数 3

我不理解java多线程系统和Nodejs多线程系统在性能和资源共享方面的区别。由于NodeJS为您的程序使用事件循环单线程,但在场景后面,它将任务分配给不同的线程,如文件读取或db查询。因此,它使用多线程和线程池(类似于Java?)。但是,当我们比较性能时,NodeJS应用程序比其他多线程系统要好得多。

NodeJS实际上是如何处理多线程编程挑战的,比如溢出或锁定线程。它如何在线程之间共享资源--例如,我同时使用两个I/O访问同一个文件--因此将有两个线程访问一个资源,它是否适用于NodeJS多线程系统?还是我误解了这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 09:09:42

Nodejs正为此目的使用利布夫,这是在C上编写的。

这就是为什么您不能比较Java和Nodejs,我们可以说,Nodejs使用的是低级别机制来生成异步IO。

为nodejs设计的libuv,但它可以用于任何项目。

您提到了异步磁盘操作--您可以找到关于它的很好的帖子,这里

简短版本:

使用异步磁盘I/O,而不是0.16.x版本的磁盘线程中的同步磁盘调用。

这意味着什么?这意味着您可以使用相同的方法(异步低级别IO操作),我敢打赌,您可以使用Java来提高同样的速度。

你提到的另一件事-事件循环。没有什么难的--这是很容易理解的,例如你可以朗读 的好帖子。

票数 3
EN

Stack Overflow用户

发布于 2017-12-10 13:49:10

这是我的2便士价值..。

多线程能力

  • 事实: Node.js (目前)在低级执行/处理线程的意义上不提供对多线程的本机支持。Java及其实现/frameworks为多线程提供了本机支持,也提供了广泛的支持(抢占、多租户、同步多线程、多线程、线程池等)。
  • “火上的裤子”(Ish):Nodejs中缺少多线程是一个节目的阻碍。Nodejs是围绕事件驱动的体系结构构建的,在该体系结构中,事件被尽可能快地产生和消耗。功能回调有本机支持。根据应用程序设计的不同,此高级功能可以支持线程可以执行的操作。S
  • 对于服务器端应用程序,在应用程序级别上,重要的是同时执行多个任务的能力:即多任务处理。有几种实现多任务处理的方法。多线程是其中之一,是一种自然适合的任务.也就是说,“多-threading”的概念是一个低级的平台方面。例如,托管/运行在单个核心进程服务器(具有一个CPU处理器内核的服务器)上的多线程平台仍然支持应用程序级别的多线程,在低级别映射到多线程,但在现实中,只有一个线程可以在任何时候执行。在具有sa y 4核的多核机器上,在应用程序级别支持相同的多任务处理,并且最多有4个线程可以在任何给定的时间同时执行。关键是,在大多数情况下,真正重要的是对多任务处理的支持,而这并不总是多线程的同义词。
  • 回到node.js,真正的讨论应该是应用程序设计和体系结构,更具体地说,支持多任务处理。一般来说,服务器端应用程序与客户端或独立应用程序之间存在着整体的范式转换,在设计和流程流程方面更是如此。除其他外,服务器端应用程序需要沿着其他应用程序运行(在服务器上),需要具有弹性和自包含性(在应用程序失败或崩溃时不影响服务器的其他应用程序),执行健壮的异常处理(即从错误中恢复,甚至是关键的错误),并需要执行多个任务。
  • 支持多任务处理的能力对于任何服务器端技术来说都是一个关键的能力。而node.js具有这种能力,并且呈现在一个非常容易使用的封装中。这意味着服务器端应用程序的设计需要更多地关注多任务,而不是只关注多线程。是的,在支持多线程的服务器端平台上工作有其明显的好处(增强功能、性能),但这本身并不能解决在应用程序级别支持多任务处理的需要。服务器端应用程序和node.js的任何可靠的应用程序设计都必须基于事件生成和使用(事件处理)的多任务处理。在node.js中,使用函数回调和小事件处理器(作为函数),跨事件处理实例使用数据检查点(保存处理数据、文件或数据库)是关键。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35404648

复制
相关文章

相似问题

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