2 个版本
0.1.1 | 2024年3月9日 |
---|---|
0.1.0 | 2024年3月9日 |
#738 在 并发
15KB
adirector
有限大小的异步 tokio 任务孵化器。
完整示例
use adirector::{Director, DirectorError};
#[tokio: main]
async fn main() -> Result<(), DirectorError> {
// create executor that allow 10 tasks concurrently.
let mut director = Director::new(10);
// read line by line stdin
let mut lines = BufReader::new(stdin()).lines();
while let Some(line) = lines.next_line().await.unwrap() {
director.spawn(async move {
println!("{}", line);
sleep(Duration::from_millis(50)).await;
}).await?; // Suspends until the task is spawned
}
// Wait for remaining tasks to complete
director.join_all().await
}
实现
使用 Semaphore 来限制任务的数量,并使用 JoinSet 来一次性连接所有任务。
依赖关系
- tokio,带有
rt
sync
功能
依赖关系
~2.3–4MB
~63K SLoC