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