gpt4 book ai didi

javascript - 在 Node js中同步工作线程

转载 作者:行者123 更新时间:2023-12-03 13:07:49 25 4
gpt4 key购买 nike

我有一些用于处理“工作线程”(Node js)的代码。在app.js循环中,当我将条件设置为i <100000000时,我的第二个线程在第一个线程未完成之前就不会启动。 Node js中的同步线程如何工作?以及如何并行使用两个或更多线程?

const { Worker } = require('worker_threads');
const path = require('path');

const WORKERS_NUMBER = 2;

for (var i = 1; i <= WORKERS_NUMBER ; i++) {
const w = new Worker(path.join(__dirname, './app.js'), { workerData: { id: i } });
w.addListener("message",(message)=>{console.log(message);});
}



const { workerData, parentPort } = require('worker_threads');

const id = workerData.id;

console.log(`Worker ${id} initializad.`);
let i=0;
while (i<10) {
i++;
process.nextTick((i)=>{
parentPort.postMessage( `${id}:${i}` );
},i);
}

最佳答案

您需要手动同步线程的执行。
您可以通过监听从工作人员发送到主线程的特定消息,并使用计数器来知道何时所有线程都已完成,来做到这一点。

否则,您可以使用microjob lib轻松地将工作线程执行包装在Promise中,因此同步变得很简单。

看一看docs内的示例。

关于javascript - 在 Node js中同步工作线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54399127/

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