是否有可能在nodejs中实现multithreading?

nodejsmultithreading

天气有可能在nodejs中使用多重引导? 如是。 在nodej中使用多重引擎有哪些优缺点?哪些模块可以在nodejs中实现multithreading? 我是nodejs的新手,我从很多博客读到,说这个节点是单线程的。 我知道Javamultithreading,但我需要知道天气,它可能在节点或不。

       

网上收集的解决方案 "是否有可能在nodejs中实现multithreading?"

是的,不,我们从头开始。 为什么NodeJs是单线程的,这里解释一下为什么Node.js是单线程的?

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

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

一般而言,更清楚的是,每个node.js进程都是单线程的,如果你想要多个线程,你也必须有多个进程。 比如,你可以使用subprocess来实现这个,这个在http://nodejs.org/api/child_process.html中有描述。 如果你想和child_processes一起工作 – https://blog.scottfrees.com/automating-ac-program-display.php?从-一个节点JS-web应用程序

尽pipe如此,您仍然可以通过C ++和本地nodejs C ++开发实现一种multithreading。

首先检查这些答案,可能他们会帮助你,

如何在nodejs中创build线程

Node.js C ++ addon:来自不同线程的多个callback

Node.js C ++插件:线程

https://bravenewmethod.com/2011/03/30/callbacks-from-threaded-node-js-c-extension/

当然,你可以find并利用很多提供“multithreading”function的节点插件: https ://www.npmjs.com/search ? q = thread

此外,您可以检查JXCore https://github.com/jxcore/jxcore JXCore是Node.js的分支,并允许Node.js应用程序在同一进程中的多个线程上运行。 所以最有可能的是JXCore是一个解决scheme。

“在Node.js中使用multithreading有什么优点和缺点?”

这取决于你想要做什么。 如果您正确使用和使用Node.js源代码,并且您的“multithreading”插件或进程或其他任何东西,不会“破解”或滥用V8或Node.js核心中的任何内容,则没有任何缺点!

正如在每一个答案中,正确的答案是“为工作使用正确的工具”。 当然,由于节点是单线程devise的,因此可以有更好的multithreading方法。

许多人使用的技术是在C ++,Java,Python等中创buildmultithreading应用程序,然后通过自动化和Node.js child_process(第三方应用程序与自动化asynchronous运行)性能(例如C ++应用程序),并且您可以发送input并从Node.js应用程序中获取输出。

multithreadingNode.js的缺点

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

请记住,如果要通过修改在Node.js中创build一个纯multithreading环境,那么由于复杂性,我认为这将是困难的,冒险的,而且必须始终保持最新的每个新的V8或Node释放,可能会影响这一点。

希望这可以帮助。

不,你不能在node.js中使用线程。 它使用代码执行的asynchronous模型。 在asynchronous模型的后面,节点本身使用线程。 但据我所知,无法在没有附加库的情况下访问应用程序。

使用asynchronous模型,您并不需要线程。 这是一个简单的例子。 通常,在multithreading环境中,您可以在每个线程中运行networking请求,以阻止主线程中代码的执行。 对于asynchronous模型,这些请求不会阻塞主线程,并且仍然在其他线程中执行,只有这样才能隐藏起来,使开发过程变得简单。