Javascript 有没有办法在NodeJS中进行多线程编码?
根据我的理解,NodeJS中只有I/O是非阻塞的。例如,如果我们做了大量繁重的数学运算,其他用户在完成之前无法访问服务器Javascript 有没有办法在NodeJS中进行多线程编码?,javascript,multithreading,node.js,Javascript,Multithreading,Node.js,根据我的理解,NodeJS中只有I/O是非阻塞的。例如,如果我们做了大量繁重的数学运算,其他用户在完成之前无法访问服务器 我想知道在NodeJS中是否有一种非阻塞的方式来进行繁重的计算?只是好奇。使用多个NodeJ实例并通过套接字进行通信 如果要对节点执行长时间运行的计算,则需要启动单独的进程来处理这些计算。通常,这可以通过创建一些单独的工作进程并将计算传递给它们来实现。通过这样做,可以保持主节点事件循环的畅通 在实现方面,您有两个主要选择 第一个是使用函数手动派生子进程。这一个很好,因为您的计
我想知道在NodeJS中是否有一种非阻塞的方式来进行繁重的计算?只是好奇。使用多个NodeJ实例并通过套接字进行通信 如果要对节点执行长时间运行的计算,则需要启动单独的进程来处理这些计算。通常,这可以通过创建一些单独的工作进程并将计算传递给它们来实现。通过这样做,可以保持主节点事件循环的畅通 在实现方面,您有两个主要选择
我现在选择第一种。当前的子进程API支持以类似于工作者的方式在进程之间轻松发送消息和对象,因此没有理由使用单独的工作者模块。使用多个节点实例,并通过节点zeromq、HTTP、普通TCP套接字、IPC(例如unix域套接字)、JSON-RPC或其他方式进行通信。或者使用上面建议的WebWorkers API
多实例方法有其优点和缺点。缺点是启动这些实例和实现自己的交换协议会带来负担。优点是可以扩展到多台计算机(而不是一台计算机中的多个内核/处理器)。我认为这已经太晚了,但这是nodejs的一个非常棒的特性,您必须了解它 到目前为止,abot多线程的唯一方法是生成新进程。 但是nodejs在派生的节点分叉之间有一个实现的消息特性。
开发人员的出色工作,您可以将对象等作为消息传递给您的孩子,并向后您可以使用它来运行单独的节点进程,以完成繁重的计算,并在两者之间进行通信。Hook.io特别有用,因为它具有自动修复网格,这意味着如果某个钩子(进程)崩溃,它可以自动重新启动。您可以使用节点群集模块
我会使用JXCore——它是一个基于nodejs的优化引擎,运行您的代码,但有几个选项,包括您正在搜索的多线程。在生产中运行这是一种魅力! 项目来源: 特色包括:
- 支持核心Node.JS功能
- 可嵌入接口
- 发布到移动平台(Android、iOS等)
- 支持多个JavaScript引擎
- 多线程功能
- 进程配置和监视器
- 内存文件系统
- 应用程序包装
- 支持最新的JavaScript功能(ES6、ASM.JS…)
- 支持通用Windows平台(uwp)api