std::sync::mpsc::channel

Function std::sync::mpsc::channel

pub fn channel<T>() -> (Sender<T>, Receiver<T>)

Creates a new asynchronous channel, returning the sender/receiver halves. All data sent on the Sender will become available on the Receiver in the same order as it was sent, and no send will block the calling thread (this channel has an "infinite buffer", unlike sync_channel, which will block after its buffer limit is reached). recv will block until a message is available.

The Sender can be cloned to send to the same channel multiple times, but only one Receiver is supported.

If the Receiver is disconnected while trying to send with the Sender, the send method will return a SendError. Similarly, If the Sender is disconnected while trying to recv, the recv method will return a RecvError.

Examples

use std::sync::mpsc::channel;
use std::thread;

let (sender, receiver) = channel();

// Spawn off an expensive computation
thread::spawn(move|| {
    sender.send(expensive_computation()).unwrap();
});

// Do some useful work for awhile

// Let's see what that answer was
println!("{:?}", receiver.recv().unwrap());

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/sync/mpsc/fn.channel.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部