前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJS工作线程Worker使用简介

NodeJS工作线程Worker使用简介

原创
作者头像
用户4623659
发布2024-01-18 17:22:53
6170
发布2024-01-18 17:22:53

NodeJs为异步单线程模型,其中如果主线程如果执行比较耗CPU的操作,可能会失去响应,因此工作线程(Worker)对于执行 CPU 密集型 JavaScript 操作非常有用。

worker_threads模块允许使用并行执行 JavaScript 的线程。模块包含跟worker线程通信的接口。

NodeJs Worker使用

我们创建2个js文件,分别是main.js和worker.js

main.js代码如下,main.js向worker传入一个数组,让worker进行排序后返回

代码语言:js
复制
const { Worker } = require('worker_threads');


let data = ["Banana", "Orange", "Apple", "Mango"]

// 创建一个worker,执行文件为worker.js,传入数据
const worker = new Worker('./worker.js',{
    workerData: data,
});

worker.on('message', (message)=>{
    console.info(`收到worker发来的消息:${message}`)
});
worker.on('error', (error)=>{
    console.info(`worker错误 ${error}`);
});
worker.on('exit', (code) => {
    console.info(`worker退出了,退出码 ${code}`);
});

worker.js内容如下

代码语言:js
复制
const {  isMainThread,parentPort, workerData } = require('worker_threads');

if (!isMainThread) {//在worker线程
    //获取host传来的参数
    const data = workerData;
    //进行一些高CPU的操作
    //如:排序
    data.sort()
    //返回数据
    parentPort.postMessage(data);
}

执行

代码语言:shell
复制
node main.js

输出

代码语言:shell
复制
收到worker发来的消息:Apple,Banana,Mango,Orange
worker退出了,退出码 0

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NodeJs Worker使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档