MST

星途 面试题库

面试题:JavaScript 中 Node 工作线程基础使用

请简述在 Node.js 中如何创建一个简单的工作线程,并说明主工作线程和子工作线程之间如何进行通信。
43.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

创建简单工作线程

在 Node.js 中,可以使用 worker_threads 模块来创建工作线程。以下是一个简单示例:

  1. 主文件(例如 main.js
const { Worker } = require('worker_threads');

// 创建一个新的工作线程
const worker = new Worker(__dirname + '/worker.js');

worker.on('message', (message) => {
  console.log('从子工作线程接收到消息:', message);
});

worker.postMessage('你好,子工作线程');
  1. 子工作线程文件(worker.js
const { parentPort } = require('worker_threads');

parentPort.on('message', (message) => {
  console.log('从主工作线程接收到消息:', message);
  parentPort.postMessage('你好,主工作线程');
});

主工作线程和子工作线程之间通信

  1. 主工作线程向子工作线程发送消息
    • 使用 worker.postMessage(data) 方法,data 可以是任何可结构化克隆的数据,如字符串、对象、数组等。例如在上述 main.jsworker.postMessage('你好,子工作线程');
  2. 子工作线程向主工作线程发送消息
    • 在子工作线程中,通过 parentPort.postMessage(data) 发送消息,parentPort 代表与主工作线程通信的端口。例如在 worker.jsparentPort.postMessage('你好,主工作线程');
  3. 接收消息
    • 主工作线程:通过监听 workermessage 事件来接收子工作线程发送的消息,如 worker.on('message', (message) => { /* 处理消息 */ });
    • 子工作线程:通过监听 parentPortmessage 事件来接收主工作线程发送的消息,如 parentPort.on('message', (message) => { /* 处理消息 */ });