本文简要介绍rust语言中 std::sync::mpsc::Receiver.recv_deadline
的用法。
用法
pub fn recv_deadline(&self, deadline: Instant) -> Result<T, RecvTimeoutError>
尝试在此接收器上等待一个值,如果相应的通道已挂起或到达 deadline
,则返回错误。
如果没有可用数据并且有可能发送更多数据,此函数将始终阻塞当前线程。一旦消息被发送到相应的 Sender
(或 SyncSender
),那么这个接收器将唤醒并返回该消息。
如果相应的 Sender
已断开连接,或者在此调用阻塞时断开连接,则此调用将唤醒并返回 Err
,以指示此通道上再也无法接收到消息。但是,由于通道是缓冲的,因此在断开连接之前发送的消息仍将被正确接收。
例子
在截止日期前成功接收值:
#![feature(deadline_api)]
use std::thread;
use std::time::{Duration, Instant};
use std::sync::mpsc;
let (send, recv) = mpsc::channel();
thread::spawn(move || {
send.send('a').unwrap();
});
assert_eq!(
recv.recv_deadline(Instant::now() + Duration::from_millis(400)),
Ok('a')
);
到达截止日期时收到错误:
#![feature(deadline_api)]
use std::thread;
use std::time::{Duration, Instant};
use std::sync::mpsc;
let (send, recv) = mpsc::channel();
thread::spawn(move || {
thread::sleep(Duration::from_millis(800));
send.send('a').unwrap();
});
assert_eq!(
recv.recv_deadline(Instant::now() + Duration::from_millis(400)),
Err(mpsc::RecvTimeoutError::Timeout)
);
相关用法
- Rust Receiver.recv_timeout用法及代码示例
- Rust Receiver.recv用法及代码示例
- Rust Receiver.try_recv用法及代码示例
- Rust Receiver.try_iter用法及代码示例
- Rust Receiver.iter用法及代码示例
- Rust Receiver用法及代码示例
- Rust Result.unwrap_or_else用法及代码示例
- Rust RefCell.try_borrow_unguarded用法及代码示例
- Rust Ref.map用法及代码示例
- Rust RefMut.leak用法及代码示例
- Rust Ref.filter_map用法及代码示例
- Rust RefCell.replace_with用法及代码示例
- Rust Result.as_deref_mut用法及代码示例
- Rust Result.unwrap_or_default用法及代码示例
- Rust Result.as_mut用法及代码示例
- Rust Result.map_or用法及代码示例
- Rust Result.err用法及代码示例
- Rust Result用法及代码示例
- Rust Read用法及代码示例
- Rust Result.is_err用法及代码示例
- Rust Result.into_ok用法及代码示例
- Rust Result.cloned用法及代码示例
- Rust Result.unwrap_err用法及代码示例
- Rust Rem用法及代码示例
- Rust Result.expect用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::sync::mpsc::Receiver.recv_deadline。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。