问题标签 [worker-thread]
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.
javascript - nodejs工作线程有超时吗?
我使用节点工作线程在其中运行 setTimeout 循环,但我发现它没有按我的预期运行。
工作线程中的代码只运行了大约 13 次,并且它没有错误地停止。
工作线程只运行 setTimeout 中的代码 13 次。不是10000次。为什么?
node.js - 节点 | worker_thread | 在工作人员中保持活动的 tcp 连接?
使用节点 12 的worker_threads,是否适合在工作人员中建立远程连接并保持这些连接处于活动状态?
我并不是说我们可以用sharing
nodemaster
和.workers
cluster
fork
这个想法是在工作人员内部建立安全连接池,以便在需要时使用。
假设我有 10 名工人。创建工作人员时,会创建一些预先建立的“TLS”连接(流)到服务器 X、Y 和 Z,并且工作人员被标记为“就绪”
每次我使用工作人员处理“繁重”任务(mapReduce 等)时,如果我需要在此过程中向服务器 X、Y 或 Z 发布数据或从服务器 X、Y 或 Z 获取数据,我使用适当的“TLS”连接已经从池中建立。
任务完成后,结果将返回给主服务器,工作人员只需执行新的/下一个任务。
1) 你看到这样做有什么副作用/影响吗?
2)在“主线程”(主线程)上拥有“TLS”连接池会更好。如果在任务期间工作人员内部需要“远程”数据,请使用“postMessage”方法与“master”通信(反之亦然)。
谢谢
node.js - node worker_threads console.log 在 postMessage 之后
节点 v10.16.3
我正在运行worker_threads
节点官方文档中的示例。为了测试共享变量,我做了一些更改。这是一个例子
工作线程.js
并且有一个用于测试此示例的脚本:
主线程和工作线程都a
可以访问。当我运行这段代码时,输出是
我想知道为什么工人的 postMessage 早于工人的 console.log
c++11 - 由工作线程托管的 Boost.Fibers 似乎不起作用——为什么?
我想使用由工作线程托管的 Boost.Fibers 而不仅仅是线程。我想在编写下面显示的代码时,我已经按照手册中的所有内容完成了所有操作,但它似乎不起作用——输出中缺少“<anonymous> called”。
有谁知道为什么?
node.js - 如何在 Node.js 中的两个工作线程之间创建直接通信通道
new MessageChannel
有没有办法在两个工作线程之间创建直接通信通道?例如:P
我使用worker_thread
API 创建了一个主线程,它创建了两个工作线程W1
和W2
我想直接启用W1
和之间的通信,W2
而不是通过P
using进行通信parentPort
。
javascript - 节点:错误选项:--experimental-worker
我正在尝试在node.js
.
我保存上面的代码并在终端上index.js
运行。node --experimental-worker index.js
我收到以下错误:
节点:错误选项:--experimental-worker。
我v8.16.0
的 Mac 中安装了节点。
node.js - 使用 worker_threads 的打字稿配置
我试图在 Typescript 中使用 WebWorkers,但遇到了一个问题。我已经安装了@types/node 并更新了所有内容。'worker_threads' 不再是实验性的,并且处于 node.js 的稳定版本中。
这是我的打字稿配置:
当我尝试像这样在我的打字稿文件中导入时:
我收到错误:
我也使用 Vue.js 作为前端。我已经尝试了我能找到的一切,所以我很高兴得到每一个帮助。如果这不起作用,我将适当地切换到 JavaScript。谢谢。
javascript - 如何防止 Node.js 12 工作线程立即终止?
我有一个运行 Express 服务器的 Node.js 应用程序和一个定期执行某些操作的工作线程。
当服务器停止时,我需要清理与工作线程启动时打开的外部系统的连接。
我尝试在进程上为 SIGTERM 和 SIGINT 信号添加处理程序,但这不起作用,工作线程中的处理程序函数没有被调用,当父进程收到 SIGINT 或 SIGTERM 时,它立即退出并退出代码 1,虽然父进程也有一个处理程序,这些处理程序确实被调用。
这是一个重现问题的简单代码示例:
开始.js
worker.js
当我启动soWorker.js时,当我用 CTRL+C 中断进程时,我会在控制台上得到这个输出:
我期望发生的是这样的:
我希望stop
调用工作线程中的函数,以便我可以使用它来关闭与外部系统的连接,然后优雅地退出工作线程进程并返回代码 0。
相反,工作线程以代码 1 退出,这是工作线程停止时的默认值。
我的问题:
当主进程终止时,如何在我的工作线程中执行一些清理代码?
我是否采用上述方法走在正确的轨道上?
node.js - Can't resolve 'worker_threads' in create-react-app
I'm trying to use "worker_threads" in my react-app for some cpu-intensive works. but react-app can't find "worker_threads" in node.js library.
Here is my code:
"npm start" script throws following error: "Can't resolve 'worker_threads' in 'C:\path\to\fibonacci.js'"
- node version: 12.13.0
- react-scripts version: 3.2.0
javascript - Nodejs 和 Express,使用来自工作线程的 res.send()
在 Nodejs 中,使用 Express 作为服务器,我将繁重的计算卸载到工作线程上。
在主应用程序中,我这样调用工作线程:
工人看起来像这样:
工作人员生成大量数据,“postMessage”导致服务器错误。
有没有办法将这些数据从工作线程直接发送到客户端,使用res.send()
或类似的东西?
(而不是使用postMessage
然后从主线程发送)?