本文简要介绍rust语言中 Function std::sync::mpsc::sync_channel
的用法。
用法
pub fn sync_channel<T>(bound: usize) -> (SyncSender<T>, Receiver<T>)
创建一个新的同步有界通道。在 SyncSender
上发送的所有数据将在 Receiver
上可用,其顺序与发送时相同。与异步 channel
一样, Receiver
将阻塞,直到有消息可用。但是,sync_channel
在发送者的语义上有很大的不同。
该通道有一个内部缓冲区,消息将在其中排队。bound
指定缓冲区大小。当内部缓冲区已满时,未来的发送将堵塞等待缓冲区打开。请注意,缓冲区大小为 0 是有效的,在这种情况下,这将变为 “rendezvous channel”,其中每个std::sync::mpsc::SyncSender.send不会返回,直到std::sync::mpsc::Receiver.recv与之配对。
SyncSender
可以多次克隆到同一频道的 send
,但只支持一个 Receiver
。
与异步通道一样,如果在尝试使用 SyncSender
连接 send
时 Receiver
断开连接,则 send
方法将返回 SendError
。同样,如果在尝试 recv
时 SyncSender
断开连接,则 recv
方法将返回 RecvError
。
例子
use std::sync::mpsc::sync_channel;
use std::thread;
let (sender, receiver) = sync_channel(1);
// this returns immediately
sender.send(1).unwrap();
thread::spawn(move|| {
// this will block until the previous message has been received
sender.send(2).unwrap();
});
assert_eq!(receiver.recv().unwrap(), 1);
assert_eq!(receiver.recv().unwrap(), 2);
相关用法
- Rust symlink用法及代码示例
- Rust symlink_dir用法及代码示例
- Rust symlink_metadata用法及代码示例
- Rust symlink_file用法及代码示例
- Rust str.make_ascii_uppercase用法及代码示例
- Rust slice.sort_unstable_by_key用法及代码示例
- Rust slice.iter_mut用法及代码示例
- Rust slice.windows用法及代码示例
- Rust slice.repeat用法及代码示例
- Rust slice.group_by_mut用法及代码示例
- Rust slice.align_to_mut用法及代码示例
- Rust size_of用法及代码示例
- Rust slice.as_chunks_unchecked用法及代码示例
- Rust str.strip_suffix用法及代码示例
- Rust str.trim_left用法及代码示例
- Rust slice.fill用法及代码示例
- Rust slice.array_windows用法及代码示例
- Rust slice.sort_unstable_by用法及代码示例
- Rust slice.sort用法及代码示例
- Rust str.char_indices用法及代码示例
- Rust str.to_ascii_lowercase用法及代码示例
- Rust str用法及代码示例
- Rust slice.rotate_left用法及代码示例
- Rust slice.as_mut_ptr用法及代码示例
- Rust str.trim用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::sync::mpsc::sync_channel。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。