问题描述
我想从频道中选择一个频道来发送/接收数据,怎么做?
use crossbeam_channel::select;
const CHANNEL_NUM: usize = 20;
fn main() {
let mut senders = vec![];
let mut receivers = vec![];
for i in 0..CHANNEL_NUM {
let (sender,receiver) = crossbeam_channel::unbounded();
senders.push(sender);
receivers.push(receiver);
}
// send thread
let send_thread = std::thread::spawn(move || {
select! {
// how to select one from senders vec ?
}
});
// recv thread
let recv_thread = std::thread::spawn(move || {
select! {
// how to select one from receivers vec ?
}
});
send_thread.join();
recv_thread.join();
}
以下来自 crossbeam lib 的演示代码不符合我的要求,因为我想从通道 vec 中获取一个,不是文字表达式。
/// // None of the two operations will become ready within 100 milliseconds.
/// select! {
/// recv(r1) -> msg => panic!(),/// recv(r2) -> msg => panic!(),/// default(Duration::from_millis(100)) => println!("timed out"),/// }
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)