fparkan/vendor/flume/examples/perf.rs
Valentin Popov 1b6a04ca55
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
2024-01-08 01:21:28 +04:00

31 lines
690 B
Rust

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