node 怎么实现并行化执行传输不可序列化对象?

2024-07-19 14:58:07 +08:00
 nyxsonsleep

现在的需求是存在一个类内的方法,原来是串行的,现在需要改并行。现在我需要将一个对象 obj ,或者对象的方法 obj.run 传入子线程,然后回调执行。

但是我尝试了几种方式,似乎是没办法将复杂的对象进行传递?以至于常规的回调函数的方式没办法在 node 的并行化中实现。

  1. worker_thread
new Worker(moduleThreadFile, 
workerData:{'obj':obj}) //ERROR

会报告 Cannot set property code of which has only a getter.

  1. workerpool
pool=workerpool.pool()
pool.exec(obj,[])

实际上传入的 obj 在子线程中是 undefined

3388 次点击
所在节点    Node.js
51 条回复
SenseHu
2024-07-22 12:44:31 +08:00
有没可能方向就错了, node 适合计算密集型任务?
yaodong0126
2024-07-22 13:52:44 +08:00
不懂的能不能不要乱说? worker 什么时候变成进程了?你去 ps 看看进程号不难吧?天天在那误人子弟
yaodong0126
2024-07-22 13:55:13 +08:00
进程间还能避免数据拷贝,说话都有逻辑吗?没事看看书吧
zhufpy
2024-07-22 18:02:02 +08:00
想办法序列化对象吧~,或者在通过一些参数,在 worker 里实例化对象
lmw2616
2024-07-23 00:52:23 +08:00
切片上传?
lmw2616
2024-07-23 00:56:27 +08:00
@lmw2616 理解错了( ̄▽ ̄)"
yaodong0126
2024-07-23 09:19:33 +08:00
官方都说了不允许传递 function ,还在那序列化,序列化,现在程序员的平均水平是真的低
image72
2024-07-27 11:28:02 +08:00
@Livid 请求删除屏蔽 @yaodong0126 用户引战,群嘲不友善行为
yaodong0126
2024-07-29 09:11:33 +08:00
@image72 菜就多练
accelerator1
2024-08-10 11:25:47 +08:00
@yaodong0126 看起来是在说我,虽然但是,你说的对,是进程不是线程,因为是线程隔离,无法直接传递引用,我的确误人子弟了。
accelerator1
2024-08-10 11:32:35 +08:00
@yaodong0126 对不起,还是写反了,能理解意思就好😁

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1058599

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX