提问人:Yurii Stolbetskyi 提问时间:11/1/2023 更新时间:11/1/2023 访问量:68
tokio::runtime 可以在 wasm 中使用吗?
Can tokio::runtime be used in wasm?
问:
大家。
let rt = tokio::runtime::Runtime::new().unwrap();
当我尝试构建 wasm 时,此代码不起作用。
let rt = tokio::runtime::Runtime::new().unwrap();
| ^^^^^^^ could not find `Runtime` in `runtimе
let rt = tokio::runtime::Runtime::new().unwrap();
| ^^^^^^^ private module
是否可以在 wasm 中使用 tokio::runtime,或者我需要寻找其他方法? 我可以使用多线程吗?
我尝试用rt.block_on启动一个异步函数,因为当前函数不应该是异步的,它在单独的线程中运行。
答:
2赞
Chayim Friedman
11/1/2023
#1
Tokio 确实有一些 WASM 支持,请参阅文档中的 WASM 支持。您需要启用该功能(该功能不起作用并导致编译失败)。但是,它不支持多线程运行时(因为 WASM 不支持线程),因此不支持 Runtime::new()。
您需要使用 tokio::runtime::Builder::new_current_thread()
并使用方法启用所需的功能(目前仅在 WASI 上)。rt
full
time
但是,如果您真的需要,您应该重新考虑.如果你在浏览器中,使用浏览器 API 和 wasm-bindgen-futures
通过 async/await 与 JavaScript promise 进行交互。如果您在 WASI 上,仍然只提供最低限度的支持,您可能需要寻找其他东西。tokio
tokio
评论