Nodejs利用所有CPU上的所有核心

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs利用所有CPU上的所有核心相关的知识,希望对你有一定的参考价值。

我将创建多线程应用程序,高度利用所有CPU上的所有核心进行密集的IO(Web浏览),然后密集CPU(爬行流的分析)。 NodeJS是否适用于此(因为它是单线程的,我不想运行几个nodejs实例[每个核心一个]并在它们之间进行同步)。或者我应该考虑其他平台?

答案

节点是完美的;它实际上被命名为Node作为其应用程序的预期拓扑的引用,作为彼此通信的多个(分布式)节点。

看看内置的cluster模块,还可以参考this articlethat one

另一答案

javascript V8 Engine适用于在One核心上运行的异步任务。但是,这并不意味着您可以让多个核心运行相同或不同的应用程序,这些应用程序之间可以相互通信。

您只需要了解可能发生的一些多核问题。

例如,如果您要在线程之间共享大量信息,那么这可能不是您的最佳语言。

考虑到多核语言的因素,我最近已经介绍了基于Erlang(http://elixir-lang.org/)的Elixir。

它是一种非常酷的语言,100%思考多线程应用程序。但它的目的是让它变得简单,而且非常快速的应用程序可以根据您的需要/可以为多个内核进行扫描。

回到节点,答案是肯定的,它支持多线程,但由您来决定继续使用什么。看看这个答案,你可能会澄清你的想法:Node.js on multi-core machines

以上是关于Nodejs利用所有CPU上的所有核心的主要内容,如果未能解决你的问题,请参考以下文章

Spark 在运行 LinearRegressionwithSGD 时未利用所有核心

为啥这段 Java 代码没有利用所有 CPU 内核?

Java并发编程-为什么要并发

资源 | 如何利用VGG-16等模型在CPU上测评各深度学习框架

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题