Struct std::sync::mpsc::Sender 1.0.0[−][src]
pub struct Sender<T> { /* fields omitted */ }
Expand description
Rust 的异步 channel
类型的发送一半。
这一半只能由一个线程拥有,但可以克隆以发送给其他线程。
可以使用 send
通过此通道发送消息。
Note: 所有发送者 (原始和克隆) 都需要被接收者去除,以停止阻止接收带有 Receiver::recv
的消息。
Examples
use std::sync::mpsc::channel; use std::thread; let (sender, receiver) = channel(); let sender2 = sender.clone(); // 第一个线程拥有发送者 thread::spawn(move || { sender.send(1).unwrap(); }); // 第二个线程拥有 sender2 thread::spawn(move || { sender2.send(2).unwrap(); }); let msg = receiver.recv().unwrap(); let msg2 = receiver.recv().unwrap(); assert_eq!(3, msg + msg2);Run
Implementations
尝试在此通道上发送值,如果无法发送,则将其返回。
当确定通道的另一端尚未挂断时,发送成功。
不成功的发送将是相应的接收者已被重新分配的发送。
请注意,返回值 Err
表示将永远不会接收到数据,但是 Ok
的返回值 不是 意味着将接收到数据。
此函数返回 Ok
之后,相应的接收者有可能立即挂断。
此方法永远不会阻塞当前线程。
Examples
use std::sync::mpsc::channel; let (tx, rx) = channel(); // 此发送始终成功 tx.send(1).unwrap(); // 由于接收者不见了,因此发送失败 drop(rx); assert_eq!(tx.send(1).unwrap_err().0, 1);Run
Trait Implementations
克隆发送者以发送到其他线程。
请注意,请注意发送方的生命周期,因为所有发送方 (包括原始发送方) 都需要丢弃,以便 Receiver::recv
停止阻塞。
从 source
执行复制分配。 Read more