node.js - 用对象填充 SharedArrayBuffer
问题描述
我的应用程序从外部源接收数据并将其分组(匹配组项并将结果显示为 HTML 表格,最高 20k msg/sec)。
问题是共享内存:应用程序实时工作,我收到带有“创建、更新、删除”标志的消息,所以我将所有内容存储在 RAM 中,不需要任何数据库。但是当我尝试对某些集群进行集群时,我的应用程序消息会丢失(我尝试使用pm2进行集群)。
所以现在我正在尝试使用 WorkerThreads 扩展我的应用程序,但是通过通信parentPort.postMessage/worker.postMessage
需要对应用程序进行大量更改。所以现在我试图通过 共享内存SharedArrayBuffer
,但我不明白如何在 master 和 worker 之间共享对象数组。
const {
Worker, isMainThread, parentPort, workerData
} = require('worker_threads');
if (isMainThread) {
const sab = new SharedArrayBuffer(1024);
sab[0] = {foo: 'bar'};
const worker = new Worker(__filename, {
workerData: sab
});
setInterval(() => {
console.log( sab[0] ); // always {foo: 'bar'}
}, 500);
} else {
let sab = workerData;
sab.foo = false; // changing "foo" value at worker but not in main thread
}
setInterval(() => {}, 1000);
解决方案
推荐阅读
- android - 如何共享在 Raw 文件夹 Android 中分配的视频文件
- javascript - 用逗号分开反应原生字符串数组并在最后一项之前输入&?
- excel - VBA excel json字符串到双重转换不起作用
- c# - 在 Blazor WebAssembly 中调整图像 (jpg) 的大小?
- c# - 在 c# 中如何将 unicode 字符转换回 UTF-8?
- reactjs - 反应图标和反应路由器
- c# - 为什么 Ok() 方法返回 text/plain 媒体类型而不是 application/json?
- c - 它是如何工作的?计算变量序列到 printf
- pandas - sortindex() 用于字符串索引
- javascript - js文件中有多个addEventListeners,只有一个有效