使用Emscripten Worker API传输数据而不进行复制
Transferring data using Emscripten Worker API without copying
有没有一种方法可以让Emscripten在web工作者和主UI线程之间传输而不是复制数据?
Emscripten有一个API来管理Web Workers之间的通信,我认为它只是在后台使用postMessage
/onmessage
机制。查找Emscripten Worker API的源代码时,它在调用postMessage
时似乎没有使用transferList
选项,因此数据会被复制。
事实上,我认为它至少被复制了两次:第一次是由浏览器在线程之间复制,第二次是由Emscripten将其复制到Emscripten管理的堆空间中。如果你想让数据在回调后在接收端继续存在,就必须第三次复制,因为根据文档,传递给回调的数据只能保证在回调期间存在。
从顶部重复我的问题:有没有一种方法可以让Emscripten通过在web工作者和主UI线程之间传输而不是复制数据来避免所有这些复制?
如果您使用SharedArrayBuffer,这是可能的。最近,Emscripten团队在Emscripten中添加了对pthread的实验性支持,使用了这一功能。然而,目前只有Firefox夜间版支持SharedArray Buffers,因此这还没有被广泛采用。
相关文章:
- 使用Emscripten Worker API传输数据而不进行复制
- 使用数据属性将HTML数据复制到另一个元素
- 从表单字段复制数据并将其放在echo语句中,所有这些都在$xml=simplexmlload_file函数中
- 使用push复制数据网格结构
- KnockoutJS复制数据开销
- 将数据从一个工作表复制到另一个工作表;使用目标工作表中的复制数据创建一个表
- 从网页版式扩展程序复制数据
- ZClip - 通过按住 Alt 单击按钮来复制数据
- 使用 jQuery 循环访问form_for选择框中复制数据
- 将javascript保存到mysql数据库+复制数据URL
- 如何复制数据从网格到mysql数据库在php
- jQuery.clone()使用withdataanddevents似乎不复制数据
- 如何在不复制数据的情况下在站点中的页面之间共享静态数据
- Do赋值操作总是从右向左复制数据
- 试图创建一个chrome扩展,将从浏览器选项卡a复制数据,并填写在浏览器选项卡B上的表单
- jQuery.clone(false)仍然从原始数据源复制数据
- 如何复制数据网格列easyui的值
- 角度服务复制数据
- 使用 Google Apps 脚本复制数据
- 从一个表单复制数据,并使用jQuery或Javascript将其粘贴到多个表单中