繁体   English   中英

在节点 js 中同步工作线程

[英]Sync worker threads in node js

我有一些代码可以玩“工作线程”(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 中,因此同步变得微不足道。

查看文档中的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM