跳到主要内容

consume_budget

搜索

函数 consume_budget 

Source
pub async fn consume_budget()
展开描述

消耗一个单位的预算;若 task 的协作预算已耗尽,则将执行权交回 Tokio 运行时。

只有当其整个 coop 预算都已耗尽时,任务才会让出。 此函数可用于在不使用 Tokio 资源(如 socket 或 semaphore) 的长时间计算中插入可选的让出点, 而无需每次都冗余地让出给运行时。

§示例

确保返回(可能大量)迭代值之和的函数是协作式的。

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
}