#context #workaround #future #task #async-await #store #dummy

nightly core-futures-stateless

无std异步await的解决方案,不存储任务上下文

1个不稳定版本

0.1.0 2019年7月26日

#2158 in 异步


lpc11xx-async-hal中使用

MIT许可协议

5KB
63 代码行

注意:这是一个绕过当前标准库限制的解决方案库。将来可能不再需要!

此库是一个受此处启发的libcore包装库,允许在受限制的环境中(如微控制器)使用#![feature(async_await)],在#![no_std]。在当前实现中,task::Context是一个空白上下文,什么也不做,且不存储在任何地方,因此此库仅在futures通过某些中断请求等外部方式唤醒时才有用。例如,在Cortex-M上,可以使用PendSV异常来达到这个目的。

适当的实现将模拟线程局部存储,但我还没有需要这样做,并且可能在未来一段时间内也不需要。

用法

将以下内容放入你的Cargo.toml以覆盖libcore

[dependencies.core]
package = "core-futures-stateless"
version = "0.1.0"

此库还公开了一个额外的非核心方法task::stateless_waker(),该方法将创建一个无状态的task::Waker(没有行为),你的执行器可以使用它来轮询futures。此方法可以轻松在外部实现,但为了方便和减少代码大小,提供此方法。

无运行时依赖