fparkan/vendor/flume/examples/perf.rs

31 lines
690 B
Rust
Raw Normal View History

fn main() {
let thread_num = 32;
let msg_num = 16;
let (mut main_tx, main_rx) = flume::bounded::<()>(1);
for _ in 0..thread_num {
let (mut tx, rx) = flume::bounded(1);
std::mem::swap(&mut tx, &mut main_tx);
std::thread::spawn(move || {
for msg in rx.iter() {
tx.send(msg).unwrap();
}
});
}
for _ in 0..1000 {
let main_tx = main_tx.clone();
std::thread::spawn(move || {
for _ in 0..msg_num {
main_tx.send(Default::default()).unwrap();
}
});
for _ in 0..msg_num {
main_rx.recv().unwrap();
}
}
}