异步 Rust 编程:从自定义 Future 到 P2P 网络应用
1. 理解异步 Rust 中的自定义 Future
在异步 Rust 编程中,我们可以实现自定义的 Future 来满足特定的需求,比如实现一个异步定时器。下面我们将详细介绍如何实现一个自定义的异步定时器 Future。
1.1 自定义 Future 的需求
我们要创建一个新的 Future 来表示一个异步定时器,它需要完成以下任务:
1. 定时器接受一个过期时间。
2. 每当运行时执行器对其进行轮询时,会进行以下检查:
- 如果当前时间大于过期时间,它将返回 Poll::Ready 并附带一个 String 值。
- 如果当前时间小于过期时间,它将进入休眠状态直到过期时间,然后触发 Waker 的 wake() 调用,这将通知异步运行时执行器再次调度并执行该任务。
1.2 代码实现
以下是实现自定义异步定时器 Future 的代码:
use std::future::Future;
use std::pin::Pin;
use std::task::{Context, Poll};
use std::thread::sleep;
use std::time::{Duration, Instant};
struct AsyncTimer {
expiration_time: Instant,
}
impl Future for Asyn
超级会员免费看
订阅专栏 解锁全文
638

被折叠的 条评论
为什么被折叠?



