我想获取活动的tokio任务计数。在Python中,我可以使用len(asyncio.all_tasks())
来返回当前正在运行的循环的未完成任务。我想知道是否有相应的方法在Tokio中。
以下是示例代码:
use std::time::Duration;
use tokio; // 1.24.1
use tokio::time::sleep;
fn active_tasks() -> usize {
todo!("get active task somehow")
}
#[tokio::main]
async fn main() {
tokio::spawn(async { sleep(Duration::from_secs(5)).await });
tokio::spawn(async { sleep(Duration::from_secs(1)).await });
tokio::spawn(async { sleep(Duration::from_secs(3)).await });
println!("t = 0, running = {}", active_tasks());
sleep(Duration::from_secs(2)).await;
println!("t = 2, running = {}", active_tasks());
sleep(Duration::from_secs(4)).await;
println!("t = 6, running = {}", active_tasks());
}
我期望上述程序的输出将打印出活动任务的数量,因为主函数本身就是一个tokio任务,所以如果出现以下输出,我也不会感到惊讶:
t = 0, running = 4
t = 2, running = 3
t = 6, running = 1
active_tasks()
如果需要的话可以是一个异步函数。
tokio::active_tasks()
可以返回数量的东西。(也许在未来会有) - coder3101