问题标签 [node-worker-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
278 浏览

node.js - 如何在 nodejs 中使用工作线程?

我有以下代码,其中传递数组长度太高并且处理每个数组元素需要一秒钟的时间,我如何在以下条件下使用工作线程?

0 投票
1 回答
485 浏览

node.js - 无法在 worker_threads 中调用类实例方法

我正在为 node.js 'worker_threads' 苦苦挣扎。

所以我想做的是将我的自定义类的几个实例传递给工作线程。实例通过一些唯一的序列号分配给映射。所以基本上,我有一个类型的 Map - <string, MyUniqueClassInstance>。

我的工作人员实现如下所示:

运行工作服务的类方法:

工人本身:

每当在“计数”方法中尝试从项目实例运行方法时,它都会引发错误

在将实例传递给 .count() 方法之前,我尝试 console.log() 内容,一切都已正确解决。

相同的模式在工作实例之外完美运行。

谁能帮我找出这段代码中到底有什么可能出错的地方?

0 投票
0 回答
29 浏览

node.js - 在 web worker 中使用 nodejs ssh2

我正在尝试@nrwl/node在 nodeJS API 中使用 nx 项目(使用)中的 ssh2 插件。

这是我的模块:

通过更改默认的 webpack 行为,我没有设法让它工作:

在工人内部做这件事好吗?如果是这样,如何从工人那里导入 ssh?

0 投票
1 回答
95 浏览

node.js - 您将如何根据用户输入创建 X 数量的工作线程?

例如,用户输入 10 个,创建了 10 个运行函数的工作线程。我无法弄清楚如何做到这一点,我查看了文档并且我正在空白。

0 投票
1 回答
1135 浏览

javascript - 如何通过worker_thread.Worker传递带函数的类实例来使用函数?

为了上下文化,我想通过 NodeJS“worker_thread”模块中的工作线程来使用类实例函数。

在一个main.js文件中,我声明一个类并实例化一个新的 Worker,通过选项传递新实例workerData

main.js

如您所见,工作人员调用了process.js脚本。让我们看看。

进程.js

如您所知,此代码会引发错误:TypeError: obj.c is not a function. 事实上,在检查了 Worker Thread 文档(https://nodejs.org/dist./v10.22.0/docs/api/worker_threads.html#worker_threads_new_worker_filename_options)后,我发现 Worker 不可能是一个具有函数的对象。实际上,它可以工作,但所有功能都没有被克隆。 NodeJS 官方文档中worker_thread workerData 选项定义的屏幕截图

我真的很困惑,因为我不知道如何解决这个问题。事实上,这个例子很容易,因为简化了一个复杂的情况,但在我的情况下,我绝对需要在process.jsside 中调用 c 函数,但我不知道如何以不同的方式进行操作。

我希望你能帮助我。在此先感谢您的时间。

0 投票
0 回答
726 浏览

node.js - 如何处理 Webpack 中的 Node.js Worker 线程?

在浏览器中使用Web Workers由官方的worker-loader Webpack 模块处理。

不幸的是 worker-loader不处理 Node.js Worker threads

我正在使用 Webpack 捆绑在 Node.js 上运行的 AWS Lambda 函数。而且我想使用 Node.js 工作线程,它需要为每个工作人员实现提供专用文件。

那么在 Webpack 包中处理Node.js Worker 线程的最佳方式是什么?

注意:这是一个关于处理 Node.js 工作者服务器端(不在浏览器中)的问题。

0 投票
3 回答
12766 浏览

node.js - 打字稿找不到模块'worker_threads'

我正在尝试将 node.js 'worker_threads' 库与 Node v14.15.1 一起使用并收到此错误

我的代码 -

工作线程在节点 11 之后变得稳定。所以它应该可以工作。我究竟做错了什么 ?

PS - 我用 JS 运行了相同的代码,它运行良好,所以我不认为它的 Node.js 问题。fs 等其他核心库也运行良好。我需要为 TS 做任何额外的配置吗?

0 投票
0 回答
192 浏览

node.js - worker_threads 无法在 Nodejs 中执行 Promise

我在 nodejs 中使用 worker_threads 模块。

但是工人不能执行承诺代码。

DataCloneError: # 无法克隆。发生。

如何执行异步代码?

0 投票
1 回答
451 浏览

node.js - 工作线程通信协议

我偶然发现了 NodeJS 中的工作线程,并开始研究较低级别的抽象,它们之间的相互通信和数据共享是如何工作的,尤其postMessage是用于在线程之间发送消息数据的函数。

查看这行代码const { Worker, isMainThread, parentPort } = require('worker_threads');,您会猜测它使用套接字来进行通信,因为正在使用关键字端口,但我在通过命令提示符搜索它们时发现没有打开的端口连接。

我想了解worker_thread机制使用什么通信协议?是 TCP 还是其他在线程之间共享数据和消息的机制?这是基于我想自己进行的一项研究,以了解在 worker_threads 之间传输大量数据的效率与使用内存共享/TCP 的子进程之间的 ICP 通信的效率。

0 投票
2 回答
230 浏览

javascript - 跨多个磁盘驱动器的文件系统 I/O 中的 Node.js 性能:工作线程与否?

我在这里阅读了几个关于 Node.js 以非阻塞方式快速处理文件 I/O 操作的能力与使用带有阻塞或非阻塞请求的工作线程的性能优势的问题答案,但似乎没有回答我的问题。

我正在编写一个 Node.js 应用程序,它将打开、散列和写入存储在多个硬盘驱动器上的非常大的文件(多个 gig)。我正在探索工作线程的想法,因为它们允许我将命令隔离到特定的硬盘驱动器。例如:假设我有一个线程处理将硬盘驱动器 A 上的一个文件复制到硬盘驱动器 B,另一个线程处理将一个文件从硬盘驱动器 C 复制到硬盘驱动器 D。

假设我同时将它扩展到更多的硬盘驱动器,对我来说只使用没有工作线程的 Node.js 并让它处理所有这些请求是否更有意义,或者如果我可以隔离工作线程是否更有意义按驱动器 I/O,并同时处理多个驱动器的请求?

鉴于我读过的内容,工作线程似乎是显而易见的解决方案,但我也看到让单个 Node.js 进程处理文件 I/O 队列通常更快。感谢您提供的任何指导!