20 条回复  ·  384 次点击
Melting 小成 2024-7-19 17:49:50
可以用 module.exports 导出方法,在 worker_threads 里调用吧
momocraft 小成 2024-7-19 19:12:47
重写一份不绑定对象的,参数可以序列化的 run
EchoWhale 小成 2024-7-19 19:32:28
别想了,自己实现一个序列化/反序列化方法吧。
nomagick 小成 2024-7-19 19:43:32
你就别当 node 有线程,node 相当于没有线程,先序列化再反序列化,多进程模型

而且 node 里面的 fork, 也不是你认为的 fork, 纯就是重新再启动一个新的
mark2025 小成 2024-7-19 20:11:51
@nyxsonsleep 在 worker 内加载/初始化这个对象不行么?
image72 小成 2024-7-20 19:10:09
我看到 workerData 支持 Blob, dataview,arraybuffer 类型(The structured clone algorithm
)[https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#webapi_types]
accelerator1 小成 2024-7-22 09:35:16
nodejs 中的 worker 是多进程,不是多线程,不能内存共享,正常情况没法传递引用。
但是 worker 支持 transferable 对象,也就是可以直接传递引用避免进程间的数据拷贝,其实还是要自己实现序列/反序列化。

如果你的 obj 不可序列化,那就把 obj 的实例化函数放到 worker 中,通过传递 obj 实例化的相关参数来实现。
kyuuseiryuu 小成 2024-7-22 10:13:28
源码级传递 —— 你在 worker 侧实现一个一摸一样的类。这样把数据丢过去就能计算了。
SenseHu 小成 2024-7-22 12:44:31
有没可能方向就错了, node 适合计算密集型任务?
zhufpy 初学 2024-7-22 18:02:02
想办法序列化对象吧~,或者在通过一些参数,在 worker 里实例化对象
返回顶部