节点中的线程与其他编程语言的关系

问题描述 投票:-1回答:1

因为线程是Node.js的新增功能,所以如果有人可以将node.js中的线程与其他编程语言(例如C ++和Java)进行比较,那将是有益的。请特别回答以下问题?

与其他编程语言(如C ++和Java)相比,node.js中threading实现的异同是什么?

node.js应用程序的最大线程数是多少?

node.js multithreading
1个回答
1
投票

这是一个相当广泛的主题,人们可以写一本书的几章来讨论。我会尽量保持较高的水平,并为您提供一些考虑因素。

[与其他编程语言(如C ++和Java)相比,node.js中的线程实现有何异同?

根本没有太多相似之处。 Node.js为每个线程创建一个单独的编程上下文。该编程上下文不共享对主线程或其他线程(如C ++或Java)的常规变量的访问。取而代之的是,您在线程之间使用某种消息传递进行通信,从而强制访问同步,并要求序列化/复制在线程之间传递的数据(少数特殊的托管情况除外)。

在C ++中,要访问其他线程可以访问的数据,必须使用互斥锁之类的工具来防止出现竞争情况。这种类型的编程对于强大,纪律严明的开发人员来说是可行的,他们具有良好的设计和对细节的关注,但是使用C ++中的线程代码容易出错,这很容易导致发现错误。因为node.js强制限制访问并通过消息传递强制同步,所以通常不会遇到相同的潜在问题。

node.js应用程序的最大线程数是多少?

据我所知,node.js应用程序中的线程数没有编码限制。与任何语言一样,每个线程都会消耗资源,并且给定的系统配置和使用情况配置文件会有一些实际限制。但是,这只能通过针对给定情况的测试和反复试验来确定。如果您正在考虑使用带有大量线程的node.js应用程序,那么您可能会为node.js架构追求错误的设计,因为对于异步I / O模型而言,这通常不是必需的或不是最佳的。

如果您仅使用非常占用CPU的操作来运行所有线程,则运行比CPU数量更多的线程几乎没有优势,实际上,由于任务开销增加,运行更多线程可能会有不利之处交换。使用node.js集群并确定在同一主机上运行多少个集群实例时,这几乎是相同的讨论。

© www.soinside.com 2019 - 2024. All rights reserved.