我将创建多线程应用程序,高度利用所有CPU上的所有核心进行密集IO(Web浏览),然后密集CPU(爬行流的分析)。 NodeJS是否适用于此(因为它是单线程的,我不想运行几个nodejs实例[每个核心一个]并在它们之间进行同步)。或者我应该考虑其他平台吗?
答案 0 :(得分:0)
使用JavaScript V8 Engine处理在One Core上运行的异步任务。但是,这并不意味着您可以让多个核心运行相同或不同的应用程序,这些应用程序之间可以相互通信。
您只需要了解可能发生的一些多核问题。
例如,如果您要在线程之间共享大量信息,那么这可能不是您的最佳语言。
考虑到多核语言的因素,我最近已经介绍了基于Erlang(http://elixir-lang.org/)的Elixir。
这是一种非常酷的语言,100%思考多线程应用程序。但它的目的是让它变得简单,而且非常快速的应用程序可以根据您的需要/可以为多个内核进行扫描。
回到节点,答案是肯定的,它支持多线程,但由你来决定继续做什么。看一下这个答案,你可以澄清一下你的想法:Node.js on multi-core machines
答案 1 :(得分:0)
Node非常适合;实际上,它被命名为Node,以作为其应用程序预期拓扑的参考,因为它是多个(分布式)相互通信的节点。
看看内置的cluster
模块,并参阅this article和that one以获得参考。