如何解决如何从通道 vec 中选择一个?
我想从频道中选择一个频道来发送/接收数据,怎么做?
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 举报,一经查实,本站将立刻删除。