可以在nodejs中实现多线程吗?[副本]

这个问题在这里已经有答案了
如何在nodejs中创建线程

(11个答案)

五年前关闭的

Node.js多线程

是否可以在Node.js中使用多线程?如果有的话

在Node.js中使用多线程的优点和缺点是什么?哪些模块可以在Node.js中实现多线程?我是Node.js的新手,我从很多博客上读到Node.js是单线程的

我知道java多线程技术,但我需要知道它在Node.js中是否可行

是和否。让我们从头开始。为什么NodeJs是单线程的,这里解释了为什么Node.js是单线程的

虽然Node.js本身是多线程的——I/O和其他类似操作从线程池运行——但Node.js执行的JavaScript代码出于所有实际目的都在单个线程中运行。这不是Node.js本身的限制,而是V8 JavaScript引擎和JavaScript实现的限制

Node.js包括一个用于集群多个Node.js进程的本机机制,其中每个进程运行在单独的核心上。但该集群机制不包括任何本机路由逻辑或工作者之间的共享状态

一般来说,更明确的说法是,每个node.js进程都是单线程的。如果需要多个线程,还必须有多个进程。
例如,您可以为此使用子进程,如下所述http://nodejs.org/api/child_process.html . 这篇文章很有启发性,写得也很好,如果你想使用child_进程,它可能会对你有所帮助https://blog.scottfrees.com/automating-a-c-program-from-a-node-js-web-app

尽管如此,您可以用C++和NoDJS的C++开发来实现一种多线程。

首先,看看这些答案,也许它们会帮助你

如何在nodejs中创建线程

No.jsC++:从不同线程

的多次回调
> JS C++ +线程:线程

Callbacks from Threaded Node.js C++ Extension

当然,您可以找到并利用许多提供“多线程”功能的节点插件:https://www.npmjs.com/search?q=thread

此外,您可以选中JXCorehttps://github.com/jxcore/jxcore
JXCore是Node.js的分支,允许Node.js应用程序在同一进程中的多个线程上运行。因此,JXCore很可能是您的解决方案

“在Node.js中使用多线程的优点和缺点是什么?”

这取决于你想做什么。如果您正确地利用和使用Node.js源代码,并且您的“多线程插件或进程”或其他任何东西,那么就不会“黑客”或滥用V8或Node.js核心的任何内容,那么就不会有任何缺点

正如每个答案一样,正确的答案是“为工作使用正确的工具”。
当然,由于节点是单线程设计的,所以可以使用更好的多线程方法

一个很多人使用的技术,是在C++、Java、Python E.TC中实现它们的多线程应用,然后通过自动化和NoDE.JS Payjava进程运行(第三方应用程序与自动化异步运行,您有更好的性能(例如C++应用程序)。,您可以在Node.js应用程序中发送输入并从中获取输出)

多线程Node.js的缺点

选中此项:https://softwareengineering.stackexchange.com/questions/315454/what-are-the-drawbacks-of-making-a-multi-threaded-javascript-runtime-implementat

请记住,如果您想通过修改Node.js在Node.js中创建一个纯多线程环境,我认为这将是一件困难的事情,而且由于其复杂性而存在风险,而且您必须始终了解可能会影响这一点的每一个新的V8或节点版本

希望这有帮助

发表评论