10个不稳定版本 (3个破坏性更新)
0.4.2 | 2022年2月26日 |
---|---|
0.4.1 | 2022年2月26日 |
0.3.2 | 2022年2月21日 |
0.2.1 | 2022年1月24日 |
0.1.2 | 2022年1月22日 |
在 异步 中排名第2049
每月下载量 30 次
32KB
363 行
nb-executor
此crate提供具有以下功能的异步执行器
-
#![no_std]
,不依赖于alloc
。 -
#![禁止(unsafe代码)]
. -
在当前执行线程上运行单个future。可以通过多路复用器(例如
futures::join!()
)实现并发。执行器本身是!Send + !Sync
。 -
一个对
Sync
友好的、原子32位 事件掩码 在执行器和所有外部事件源之间共享。用户定义一个事件集(例如,使用bitflags
)来使事件掩码具有意义。 -
唤醒与边沿触发 信号 对应。事件掩码的共享引用足以 引发 信号。
-
异步代码可以使用给定的 信号掩码 驱动非阻塞 poll函数。只要掩码中的任何信号被引发,就会尝试调用poll函数,直到它解析到其输出。这是执行异步工作的主要机制。
-
只有当当前事件掩码与组合信号掩码之间存在交集时,才会轮询future。同样,如果其信号掩码与在轮询“root”future之前获取的事件掩码快照之间没有交集,则不会尝试调用poll函数。
-
当假定目前不可能取得进一步进展时,将调用用户提供的 park函数。此函数可以进入无事件上下文,然后验证是否确实没有要执行的工作。然后,它可以以某种特定方式挂起执行器,例如在嵌入式固件上执行WFI/WFE风格的操作或在托管系统上使用
std::thread::park()
。 -
默认使用无操作唤醒器。它可以替换为与park函数合作的另一个唤醒器。
许可证
nb-executor
采用 Apache-2.0 协议授权。
贡献
除非您明确声明,否则您提交给 nb-executor
以供包含的贡献将遵循 Apache-2.0 许可证的条款和条件,无需任何额外条款或条件。
依赖
~0.7–1MB
~18K SLoC