rust 在WASM中实现多线程来发出http请求(使用reqwest crate)

bttbmeg0  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(156)

我正在尝试将当前的实现转换为WASM(适用于CloudFlare工作人员)。
但我一直面临的问题是,它使用多线程来发出请求,但我无法编译WASM的代码,所以目前我使用async_std::spwan_local来发出请求(源代码),这迫使程序在单线程上执行每个请求。无论如何,我可以实现多线程相同吗?
下面是一个最小的例子,我重现错误(进一步的步骤在自述文件):https://github.com/ssddOnTop/cf_workers

wj8zmpe1

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,因此该选项也不可用。
我还怀疑您的设计是否有任何优点;每个请求一个线程的模型并不特别有效。

相关问题