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
}