首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebAssembly线程

WebAssembly线程
EN

Stack Overflow用户
提问于 2021-02-04 10:12:58
回答 1查看 1.4K关注 0票数 0

我花了两天时间,通过emscripten将我的C++项目通过emscripten编译到WASM,但没有成功。

它编译得很好。我使用了options -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4。

但是当我通过"emrun index.html“执行我的index.html时--它甚至达不到主函数,并且被卡在p线程池预分配上:p线程发送了一个错误!未定义:未定义:未定义

很明显,如果我不指定线程池,它就会启动我的主函数,但是当我到达代码中创建p线程时,它会抛出相同的错误。

不幸的是,我没有在谷歌找到任何与这个问题相关的答案。我在我的浏览器:https://alex-wasm.appspot.com/threads/index.html中运行了这个程序,它报告说浏览器完全支持WebAssembly中的线程。

今天,我发现了WASM项目的例子,它被使用了p线程,但令人惊讶的是,当我用emrun启动它时,我在控制台中得到了完全相同的线程错误。

之后,我尝试在没有emrun的情况下运行它,得到了不同的错误:

Uncaught :未能在'file:///D:/engine/src/main/Emscripten/wengine.worker.js‘构造'Worker':脚本,无法从原始'null’访问脚本。在Object.allocateUnusedWorker Object.allocateUnusedWorker at Object.initMainThreadBlock ..。

当我在没有emrun的情况下运行时,我在我的项目和示例项目中都会出现相同的错误。

我需要emrun访问我的文件,而无需在服务器上部署项目(用于快速调试)。

所以,请你给我以下两个问题的提示:

  1. 是否有可能使用emrun运行带有p线程支持的webassembly?
  2. 为什么没有这个没有DOMException的emrun,它也不能工作呢?
EN

回答 1

Stack Overflow用户

发布于 2022-09-02 10:04:09

  1. 请参见P线程支持上的Emscripten文档,哪个状态: 浏览器已实现并启用的 SharedArrayBuffer将其设置在交叉原产地打开器策略(COOP)和跨源嵌入策略(COEP)标题之后。除非正确设置了这些头文件,否则在已部署的环境中,线程代码将无法工作。有关更多信息,请单击
  2. Chrome不允许您在从本地文件运行脚本时加载web工作者。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66043510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档