channel_demo/
channel_demo.rs1use avx_async::{Runtime, channel};
2use std::time::Duration;
3
4fn main() {
5 let rt = Runtime::new();
6
7 rt.block_on(async move {
8 let (tx, rx) = channel::bounded::<String>(10);
9
10 rt.spawn({
12 let tx = tx.clone();
13 async move {
14 for i in 0..5 {
15 let msg = format!("Message {}", i);
16 println!("Sending: {}", msg);
17 tx.send(msg).await.unwrap();
18 avx_async::sleep(Duration::from_millis(500)).await;
19 }
20 }
21 });
22
23 rt.spawn({
25 async move {
26 for i in 0..5 {
27 let msg = format!("Urgent {}", i);
28 println!("Sending: {}", msg);
29 tx.send(msg).await.unwrap();
30 avx_async::sleep(Duration::from_millis(300)).await;
31 }
32 }
33 });
34
35 let mut count = 0;
37 while let Some(msg) = rx.recv().await {
38 println!("Received: {}", msg);
39 count += 1;
40 if count >= 10 {
41 break;
42 }
43 }
44
45 println!("All messages received!");
46 });
47}
48
49
50
51
52