一个基于 Node.JS Worker Thread 的类 Go routine 实现(Nodejs相关)
一个基于 Node.JS Worker Thread 的类 Go routine 实现(Nodejs相关)
1 回复
在 Node.js 中,实现类似 Go routine 的并发机制,可以使用 Worker Threads 模块来创建多线程执行环境。这允许你在不同的线程中运行 JavaScript 代码,从而充分利用多核 CPU。以下是一个简单的基于 Node.js Worker Threads 的类 Go routine 实现示例:
首先,确保你安装了 Node.js,并创建一个新的项目目录。
- 创建一个
worker.js
文件,用于定义 Worker 线程中要执行的代码:
const { parentPort } = require('worker_threads');
parentPort.on('message', (data) => {
// 模拟耗时任务
setTimeout(() => {
parentPort.postMessage(`Result: ${data * 2}`);
}, 1000);
});
- 在主文件中(例如
main.js
),创建并管理 Worker 线程:
const { Worker, isMainThread, parentPort } = require('worker_threads');
if (isMainThread) {
const worker = new Worker('./worker.js');
worker.on('message', (message) => {
console.log(message);
});
worker.postMessage(5); // 发送数据给 Worker 线程
} else {
// 这部分代码在 Worker 线程中执行,已在 worker.js 中定义
}
- 运行
main.js
文件:
node main.js
输出将会是:
Result: 10
这个示例展示了如何在 Node.js 中使用 Worker Threads 实现简单的并发处理,模拟了 Go routine 的功能。你可以根据需要扩展此示例来处理更复杂的任务。