Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
This commit is contained in:
21
vendor/flume/examples/async.rs
vendored
Normal file
21
vendor/flume/examples/async.rs
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
#[cfg(feature = "async")]
|
||||
#[async_std::main]
|
||||
async fn main() {
|
||||
let (tx, rx) = flume::bounded(1);
|
||||
|
||||
let t = async_std::task::spawn(async move {
|
||||
while let Ok(msg) = rx.recv_async().await {
|
||||
println!("Received: {}", msg);
|
||||
}
|
||||
});
|
||||
|
||||
tx.send_async("Hello, world!").await.unwrap();
|
||||
tx.send_async("How are you today?").await.unwrap();
|
||||
|
||||
drop(tx);
|
||||
|
||||
t.await;
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "async"))]
|
||||
fn main() {}
|
30
vendor/flume/examples/perf.rs
vendored
Normal file
30
vendor/flume/examples/perf.rs
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
25
vendor/flume/examples/select.rs
vendored
Normal file
25
vendor/flume/examples/select.rs
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
#[cfg(feature = "select")]
|
||||
use flume::Selector;
|
||||
|
||||
#[cfg(feature = "select")]
|
||||
fn main() {
|
||||
// Create two channels
|
||||
let (red_tx, red_rx) = flume::unbounded();
|
||||
let (blue_tx, blue_rx) = flume::unbounded();
|
||||
|
||||
// Spawn two threads that each send a message into their respective channel
|
||||
std::thread::spawn(move || { let _ = red_tx.send("Red"); });
|
||||
std::thread::spawn(move || { let _ = blue_tx.send("Blue"); });
|
||||
|
||||
// Race them to see which one sends their message first
|
||||
let winner = Selector::new()
|
||||
.recv(&red_rx, |msg| msg)
|
||||
.recv(&blue_rx, |msg| msg)
|
||||
.wait()
|
||||
.unwrap();
|
||||
|
||||
println!("{} won!", winner);
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "select"))]
|
||||
fn main() {}
|
18
vendor/flume/examples/simple.rs
vendored
Normal file
18
vendor/flume/examples/simple.rs
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
use std::thread;
|
||||
|
||||
fn main() {
|
||||
let (tx, rx) = flume::unbounded();
|
||||
|
||||
let t = thread::spawn(move || {
|
||||
for msg in rx.iter() {
|
||||
println!("Received: {}", msg);
|
||||
}
|
||||
});
|
||||
|
||||
tx.send("Hello, world!").unwrap();
|
||||
tx.send("How are you today?").unwrap();
|
||||
|
||||
drop(tx);
|
||||
|
||||
t.join().unwrap();
|
||||
}
|
Reference in New Issue
Block a user