2个版本
| 0.1.1 | 2020年7月27日 |
|---|---|
| 0.1.0 | 2020年7月27日 |
#2050 in 异步
6KB
60 行
safe-async-scoped 是对 FuturesUnordered 的最小封装,位于 futures 包中,它模拟 范围任务。与 async-scoped 和 crossbeam-scoped 等相比,safe-async-scoped
- 是完全安全的
- 实现中没有
unsafe代码 - 除了
futures没有其他依赖 - 完全运行时无关
注意,使用 safe-async-scoped 生成的任务不会被作为单独的任务发送到执行器,因此它们只会在一个线程上运行。好处是,没有任何futures需要是 Send。
示例
let listener = Async::new(TcpListener::bind("127.0.0.1:8080").unwrap()).unwrap();
let lala = String::from("hello");
{
let scope = Scope::new();
scope
.start(async {
loop {
let (client, _) = listener.accept().await.unwrap();
scope.spawn(async {
handle(client, &lala).await;
});
}
})
.await;
}
依赖
~1MB
~16K SLoC