javascript 是否可以在nodejs中实现多线程?[duplicate]

tmb3ates  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(112)
    • 此问题在此处已有答案**:

How to create threads in nodejs(12个答案)
六年前关闭了。
node.js多线程。
是否可以在Node.js中使用多线程?如果可以。
在Node.js中使用多线程有什么优点和缺点?哪些模块可以在Node.js中实现多线程?我是Node.js的新手,我从许多博客上读到Node.js是单线程的。
我知道Java多线程,但我需要知道它是否可以在Node.js中使用。

eqzww0vc

eqzww0vc1#

是和否。让我们从头开始。为什么NodeJ是单线程的,在这里解释Why is Node.js single threaded?
虽然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。只是为了你的信息,也看看这篇文章,是非常有指导性的,写得很好,可能会帮助你,如果要使用子进程--https://blog.scottfrees.com/automating-a-c-program-from-a-node-js-web-app
尽管有以上所有这些,你还是可以用C和原生节点实现一种多线程。
首先看看这些答案,也许它们会对你有所帮助,
How to create threads in nodejs
Node.js C++ addon: Multiple callbacks from different thread
Node.js C++ Addon: Threading
https://bravenewmethod.com/2011/03/30/callbacks-from-threaded-node-js-c-extension/
当然,您可以找到并利用许多提供“多”线程功能的节点插件:https://www.npmjs.com/search?q=thread
此外,您可以检查JXCorehttps://github.com/jxcore/jxcoreJXCore是否为Node.js的分支,并允许Node.js应用在同一进程中的多个线程上运行。因此,JXCore很可能是您的解决方案。
“在Node.js中使用多线程有哪些优点和缺点?”
这取决于你想做什么。如果你正确地利用和使用Node.js源代码,你的“多”线程插件或进程或其他东西,不要“黑客”或滥用V8或Node.js的核心!
对于每一个问题,正确的答案都是“使用正确的工具来完成任务”。当然,由于节点是单线程的,所以您可以使用更好的方法来实现多线程。
很多人使用的一种技术是用C
、Java、Python等语言制作多线程应用程序,然后通过自动化和Node.js child_process运行它(第三方应用程序与自动化异步运行,您可以获得更好的性能(例如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来创建一个纯多线程环境,我想这将是困难的,由于复杂性而有风险的,而且你必须总是更新每个新的V8或Node版本,这可能会影响到这一点。

bvjxkvbb

bvjxkvbb2#

不,你不能在node.js中使用线程。它使用代码执行的异步模型。在异步模型背后,节点本身使用线程。但据我所知,如果没有额外的库,它们无法在应用程序中访问。
使用异步模型,你实际上不需要线程。这里有一个简单的例子。通常,在多线程环境中,你会在每个线程中运行网络请求,以避免阻塞主线程中代码的执行。使用异步模型,那些请求不会阻塞主线程,仍然在其他线程中执行,只是这对你是隐藏的,以使开发过程简单明了。
也检查这个评论由bazza。

相关问题