Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可以在nodejs中实现多线程吗?_Javascript_Node.js - Fatal编程技术网

Javascript 可以在nodejs中实现多线程吗?

Javascript 可以在nodejs中实现多线程吗?,javascript,node.js,Javascript,Node.js,Node.js多线程 是否可以在Node.js中使用多线程?如果有的话 在Node.js中使用多线程的优点和缺点是什么?哪些模块可以在Node.js中实现多线程?我是Node.js的新手,我从很多博客上读到Node.js是单线程的 我知道java多线程,但我需要知道它在Node.js中是否可行。不,您不能在Node.js中使用线程。它使用代码执行的异步模型。在异步模型背后,节点本身使用线程。但据我所知,如果没有额外的库,应用程序无法访问它们 对于异步模型,实际上不需要线程。下面是一个简单的例子。

Node.js多线程

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

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


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

不,您不能在Node.js中使用线程。它使用代码执行的异步模型。在异步模型背后,节点本身使用线程。但据我所知,如果没有额外的库,应用程序无法访问它们

对于异步模型,实际上不需要线程。下面是一个简单的例子。通常,在多线程环境中,您会在每个线程中运行网络请求,以不阻止主线程中代码的执行。使用异步模型,这些请求不会阻塞主线程,并且仍然在其他线程中执行,只是为了使开发过程简单明了,对您隐藏了这一点


还有bazza检查。

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

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

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

一般来说,更明确的说法是,每个node.js进程都是单线程的。如果需要多个线程,还必须有多个进程。 例如,您可以为此使用子进程,如下所述。这篇文章很有启发性,写得也很好,如果你想使用child_进程,它可能会对你有所帮助

尽管如此,您可以用C++和NoDJS的C++开发来实现一种多线程。 首先,看看这些答案,也许它们会帮助你

当然,您可以找到并利用许多提供“多线程”功能的节点插件:

此外,您可以选中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的缺点

选中此项:

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


希望这能有所帮助。

但npm中列出的一些多线程模块,您对此有何看法…@UmakantMane,有关更多信息,请阅读。这些线程不是本机公开的,您应该使用特殊的库来访问它们。我的意思是你可能不需要这个。谢谢你,你能列出多线程的一个缺点吗nodejs@UmakantMane,它不受开箱即用的支持,可能表明对异步模型的理解不正确。值得补充的是,Node.JS正在实现一个参与者模型编程框架。开始混合不同的东西(如单个节点中的多个线程)是复杂的,而且有点忽略了要点。Node.JS支持代码内外的异步消息传递。拥有第二个实例,并使用异步消息在它们之间进行通信。请参阅,以获得一个很好的介绍
python
,它不是一种抢占式多线程语言,与
node.js
相比浪费时间。让我们继续使用真正支持多线程的c/c++或
jvm
语言。