Javascript 有没有办法在NodeJS中进行多线程编码?

Javascript 有没有办法在NodeJS中进行多线程编码?,javascript,multithreading,node.js,Javascript,Multithreading,Node.js,根据我的理解,NodeJS中只有I/O是非阻塞的。例如,如果我们做了大量繁重的数学运算,其他用户在完成之前无法访问服务器 我想知道在NodeJS中是否有一种非阻塞的方式来进行繁重的计算?只是好奇。使用多个NodeJ实例并通过套接字进行通信 如果要对节点执行长时间运行的计算,则需要启动单独的进程来处理这些计算。通常,这可以通过创建一些单独的工作进程并将计算传递给它们来实现。通过这样做,可以保持主节点事件循环的畅通 在实现方面,您有两个主要选择 第一个是使用函数手动派生子进程。这一个很好,因为您的计

根据我的理解,NodeJS中只有I/O是非阻塞的。例如,如果我们做了大量繁重的数学运算,其他用户在完成之前无法访问服务器


我想知道在NodeJS中是否有一种非阻塞的方式来进行繁重的计算?只是好奇。

使用多个NodeJ实例并通过套接字进行通信

如果要对节点执行长时间运行的计算,则需要启动单独的进程来处理这些计算。通常,这可以通过创建一些单独的工作进程并将计算传递给它们来实现。通过这样做,可以保持主节点事件循环的畅通

在实现方面,您有两个主要选择

  • 第一个是使用函数手动派生子进程。这一个很好,因为您的计算甚至不必是javascript。运行计算的子进程甚至可能是C或其他
  • 或者,如果您愿意的话,可以通过提供几个实现。由于我还没有使用过,所以我不能说这些功能有多好,但它们很可能就是我要走的路
  • 更新
    我现在选择第一种。当前的子进程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