Wasm 音频工作线程

查看完整源代码在线查看编译后的示例

这是一个使用 WebAssembly、Rust 和 `wasm-bindgen` 在特定工作线程中使用线程的示例,最终实现了一个振荡器演示。此演示应与 并行光线追踪 示例相辅相成,通过展示使用 ES 模块和动态模块创建的另一种方法来进行补充。

构建演示

使用线程化的 WebAssembly 的一个主要问题是,Rust 没有预编译的目标(例如标准库)支持线程。这意味着您需要使用适当的 rustc 标志重新编译标准库,即 `-C target-feature=+atomics,+bulk-memory,+mutable-globals`。请注意,这需要 nightly Rust 工具链。请参阅 并行光线追踪示例的更详细说明

注意事项

此示例与并行光线追踪示例共享大多数 注意事项。但是,它尝试将工作线程创建封装在 Rust 模块中,因此应用程序开发人员无需维护自定义 JS 代码。

浏览器要求

此演示目前应在最新的 Chrome 和 Safari 版本中运行。Firefox 不支持 工作线程模块中的导入,而在这个示例中很难避免导入,因为工作线程中无法使用 `importScripts`。请注意,此示例需要设置 HTTP 头,就像 并行光线追踪 中一样。