Node.js 多线程实战:如何有效利用多线程能力
const { Worker, isMainThread, parentPort, workerData } = require('worker_threads');
if (isMainThread) {
// 主线程逻辑
const numWorkers = 2; // 假设我们想要创建两个工作线程
const tasks = [123, 456]; // 假设我们有两个任务需要并行处理
tasks.forEach((task) => {
// 为每个任务创建一个工作线程
const worker = new Worker(__filename, { workerData: task });
worker.on('message', (result) => {
console.log(`工作线程返回结果: ${result}`);
});
});
} else {
// 工作线程逻辑
// 工作线程可以直接使用workerData接收主线程传递的数据
const task = workerData;
// 执行任务...
const result = doWork(task);
parentPort.postMessage(result); // 将结果发送回主线程
}
function doWork(task) {
// 这里是工作线程执行的任务逻辑
// 例如,对传入的数据进行计算或者处理
return task * 2; // 示例返回值
}
这段代码展示了如何在Node.js中使用worker_threads
模块创建多线程执行任务。在主线程中,我们创建了两个任务并为每个任务创建了一个工作线程。工作线程接收任务数据,执行计算,并将结果发送回主线程。这样可以有效地利用多核处理器资源,提高程序的并发处理能力。
评论已关闭