跳到主要内容

consume_budget

搜索

函数 consume_budget 

源代码
pub async fn consume_budget()
展开描述

消耗一个单位的预算,如果任务的 coop 预算已用尽,则将执行返回给 Tokio 运行时。

仅当任务的整个 coop 预算已用尽时,任务才会让步。此函数可用于在不使用诸如套接字或信号量等 Tokio 资源的长时间计算中插入可选的让步点,而无需每次都重复让步给运行时。

§示例

确保一个返回(可能很多)迭代值之和的函数是协作式的。

async fn sum_iterator(input: &mut impl std::iter::Iterator<Item=i64>) -> i64 {
    let mut sum: i64 = 0;
    while let Some(i) = input.next() {
        sum += i;
        tokio::task::consume_budget().await
    }
    sum
}