gpt4 book ai didi

javascript - 使用 Emscripten Worker API 传输数据而不复制

转载 作者:可可西里 更新时间:2023-11-01 17:59:19 25 4
gpt4 key购买 nike

有没有办法让 Emscripten 在网络 worker 和主 UI 线程之间传输而不是复制数据?

Emscripten 有一个 API that manages communication between Web Workers ,我相信它只使用 postMessage/onmessage引擎盖下的机制。在源代码中查找 Emscripten Worker API ,似乎它在调用 postMessage没有使用 transferList 选项,因此数据被复制。

实际上,我认为它至少被复制了两次:首先是在线程之间被浏览器复制,然后是 second time by Emscripten。将其放入 Emscripten 管理的堆空间。而如果你想让回调后的数据在接收端继续存活,就得复制第三次,如according to the docs。传递给回调的数据只保证在回调期间存在。

从顶部重复我的问题:有没有办法让 Emscripten 通过在 Web Worker 和主 UI 线程之间传输而不是复制数据来避免所有这些复制?

最佳答案

如果您使用 SharedArrayBuffer,这是可能的.最近,Emscripten 的家伙添加了 experimental support for pthread in Emscripten , 使用此功能。然而,目前只有 Firefox nightly 支持 SharedArrayBuffers,因此尚未被广泛采用。

关于javascript - 使用 Emscripten Worker API 传输数据而不复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29427140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com