當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust channel用法及代碼示例


本文簡要介紹rust語言中 Function std::sync::mpsc::channel 的用法。

用法

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

創建一個新的異步通道,返回一半的發送者/接收者。在 Sender 上發送的所有數據都將在 Receiver 上以與發送時相同的順序可用,並且沒有 send 會阻塞調用線程(此通道具有 “infinite buffer”,與 sync_channel 不同,後者達到緩衝區限製後將阻塞)。 recv 將阻塞,直到消息可用,同時至少有一個 Sender 活著(包括克隆)。

Sender 可以多次克隆到同一頻道的 send ,但隻支持一個 Receiver

如果在嘗試使用 Sender 連接 send Receiver 斷開連接,則 send 方法將返回 SendError 。同樣,如果在嘗試 recv Sender 斷開連接,則 recv 方法將返回 RecvError

例子

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());

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function std::sync::mpsc::channel。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。