簡體   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