Node.js 多线程。
是否可以在 Node.js 中使用多线程?如果是的话。
在 Node.js 中使用多线程有哪些优点和缺点? Node.js 中可以实现多线程的模块有哪些?我是 Node.js 的新手,我从许多博客中读到 Node.js 是单线程的。
我知道 java 多线程,但我需要知道它在 Node.js 中是否可行。
最佳答案
是和否。让我们从头开始。为什么NodeJs是单线程的,这里解释Why is Node.js single threaded?
虽然 Node.js 本身是多线程的——I/O 和其他此类操作从线程池运行——但 Node.js 执行的 JavaScript 代码出于所有实际目的在单个线程中运行。这不是 Node.js 本身的限制,而是 V8 JavaScript 引擎和 JavaScript 实现的一般限制。
Node.js 包含用于集群多个 Node.js 进程的 native 机制,其中每个进程在单独的核心上运行。但这种集群机制不包括任何本地路由逻辑或工作人员之间的共享状态。
一般来说,更明确的说法是,每个 node.js 进程都是单线程的。如果你想要多个线程,你也必须有多个进程。 例如,您可以为此使用子进程,此处描述 http://nodejs.org/api/child_process.html .只是为了您的信息,请查看这篇文章,它很有启发性且写得很好,如果您想使用 child_processes 可能会对您有所帮助 -- https://blog.scottfrees.com/automating-a-c-program-from-a-node-js-web-app
尽管如此,你可以实现一种多线程用C++和原生nodejs C++开发。
首先看看这些答案,也许它们会对你有所帮助,
How to create threads in nodejs
Node.js C++ addon: Multiple callbacks from different thread
https://bravenewmethod.com/2011/03/30/callbacks-from-threaded-node-js-c-extension/
当然,您可以找到并利用许多提供“多”线程功能的 Node 插件:https://www.npmjs.com/search?q=thread
另外,您可以查看JXCore https://github.com/jxcore/jxcore JXCore 是 Node.js 的分支,允许 Node.js 应用程序在同一进程中的多个线程上运行。所以很可能 JXCore 是适合您的解决方案。
"What are the advantages and disadvantages of using multi-threading in Node.js ?"
这取决于你想做什么。如果您正确利用和使用 Node.js 源代码,并且您的“多”线程插件或进程或其他任何东西,则不会有任何缺点,不要“破解”或滥用 V8 或 Node.js 核心中的任何内容!
与每个答案一样,正确答案是“使用正确的工具完成工作”。 当然,由于 Node 设计为单线程,因此您可以有更好的多线程方法。
很多人使用的一种技术是用 C++、Java、Python 等编写多线程应用程序,然后通过自动化和 Node.js child_process 运行它(第三方应用程序与自动化异步运行,您有更好的性能(例如 C++ 应用程序),并且您可以在 Node.js 应用程序中发送输入和获取输出)。
Disadvantages multi-threading Node.js
请记住,如果您想通过修改 Node.js 来创建一个纯多线程环境,我认为这将是困难的,由于复杂性而存在风险,而且您必须始终与每个新环境保持同步V8 或 Node 版本可能会影响这一点。
希望这会有所帮助。
关于javascript - 是否可以在nodejs中实现多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028377/