Skip to content

Instantly share code, notes, and snippets.

@pferreir
Created May 27, 2020 20:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pferreir/40f007f86d908f475f02a34d73bd386e to your computer and use it in GitHub Desktop.
Save pferreir/40f007f86d908f475f02a34d73bd386e to your computer and use it in GitHub Desktop.
use async_std::{
stream::StreamExt,
sync::{channel, Sender, Receiver}
};
use futures::join;
async fn producer_1(sender: Sender<String>) {
let mut i = 0;
loop {
let s = format!("PROD1 {}", i);
sender.send(s).await;
i += 1;
}
}
async fn producer_2(sender: Sender<String>) {
let mut i = 0;
loop {
let s = format!("PROD2 {}", i);
sender.send(s).await;
i += 1;
}
}
async fn producer_3(sender: Sender<String>) {
let mut i = 0;
loop {
let s = format!("PROD3 {}", i);
sender.send(s).await;
i += 1;
}
}
async fn consumer(mut receiver: Receiver<String>) {
while let Some(msg) = receiver.next().await {
println!("{:?}", msg);
}
}
#[async_std::main]
async fn main() {
let (sender, receiver) = channel(10);
join!(
producer_1(sender.clone()),
producer_2(sender.clone()),
producer_3(sender),
consumer(receiver)
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment