gpt4 book ai didi

node.js - 在后台执行计算密集型任务

转载 作者:太空宇宙 更新时间:2023-11-03 23:06:11 24 4
gpt4 key购买 nike

我有一个任务在执行时需要大量计算而无需 IO,并且我不想在执行此任务时阻塞线程。如何在 Node.js 中执行此操作?

我需要这样的东西:

var taskManager = require("some-background-task-lib")

var doSomething = function() {
// this code will calculate something and block thread
}

// this line should not block the Node.js event loop, but execute in background, then call the provided function when done
taskManager.executeInBackground(doSomething, function(err, returnValues) {
});

最佳答案

在 Node.js 中消除计算密集型内容阻塞主线程的常用方法是将工作传递给另一个进程。有很多方法可以构建它。

  1. 集群,其中有一组进程,全部设计用于执行相同的操作,并且每个进程都会收到不同的传入请求。
  2. 创建专门为执行给定任务而设计的特定子进程,并创建在需要完成该特定任务时运行并在任务持续时间内完成的子进程。
  3. 创建一组子进程和一个工作队列,让每个子进程从队列中获取一个工作项,执行它,传回结果,然后从队列中获取下一个项目,等等...

而且,这些技术可以组合使用,也可以组合使用。

在第一种情况下,您只是创建更多的进程,所有进程都做同样的事情。

在其他两种情况下,您专门将计算密集型工作移至子进程,这样主进程就不会受到该工作的负担或阻塞。

有许多库可以帮助提供使用子进程的界面。一个这样的库提供了 webWorker type of interface .

关于node.js - 在后台执行计算密集型任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com