我正在尝试将当前的实现转换为WASM(适用于CloudFlare工作人员)。
但我一直面临的问题是,它使用多线程来发出请求,但我无法编译WASM的代码,所以目前我使用async_std::spwan_local
来发出请求(源代码),这迫使程序在单线程上执行每个请求。无论如何,我可以实现多线程相同吗?
下面是一个最小的例子,我重现错误(进一步的步骤在自述文件):https://github.com/ssddOnTop/cf_workers
我正在尝试将当前的实现转换为WASM(适用于CloudFlare工作人员)。
但我一直面临的问题是,它使用多线程来发出请求,但我无法编译WASM的代码,所以目前我使用async_std::spwan_local
来发出请求(源代码),这迫使程序在单线程上执行每个请求。无论如何,我可以实现多线程相同吗?
下面是一个最小的例子,我重现错误(进一步的步骤在自述文件):https://github.com/ssddOnTop/cf_workers
1条答案
按热度按时间wj8zmpe11#
不可以,您不能以Cloudflare worker的身份在WASM中实现多线程。不支持。
Cloudflare Worker API documentation on WebAssembly说道:
线程化
Workers中不支持线程化。每个Worker在单个线程中运行,并且不支持Web Worker API。
有关其他上下文。WebAssembly(尚未)原生支持线程。目前可以通过跳过JavaScript Web Workers API来完成多线程。因此,针对WebAssembly的Rust代码不能是多线程的(即使用
std::thread::*
API将失败)。如果这是一个网站,Web Worker API将是一个选项,但由于Cloudflare不向其工作者提供Web Worker API,因此该选项也不可用。我还怀疑您的设计是否有任何优点;每个请求一个线程的模型并不特别有效。