Julio Biason
3 years ago
3 changed files with 177 additions and 0 deletions
@ -0,0 +1,138 @@
|
||||
# This file is automatically @generated by Cargo. |
||||
# It is not intended for manual editing. |
||||
version = 3 |
||||
|
||||
[[package]] |
||||
name = "cfg-if" |
||||
version = "1.0.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" |
||||
|
||||
[[package]] |
||||
name = "getrandom" |
||||
version = "0.2.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
"libc", |
||||
"wasi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "libc" |
||||
version = "0.2.120" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ad5c14e80759d0939d013e6ca49930e59fc53dd8e5009132f76240c179380c09" |
||||
|
||||
[[package]] |
||||
name = "pin-project-lite" |
||||
version = "0.2.8" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" |
||||
|
||||
[[package]] |
||||
name = "ppv-lite86" |
||||
version = "0.2.16" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" |
||||
|
||||
[[package]] |
||||
name = "proc-macro2" |
||||
version = "1.0.36" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" |
||||
dependencies = [ |
||||
"unicode-xid", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "quote" |
||||
version = "1.0.15" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rand" |
||||
version = "0.8.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" |
||||
dependencies = [ |
||||
"libc", |
||||
"rand_chacha", |
||||
"rand_core", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rand_chacha" |
||||
version = "0.3.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" |
||||
dependencies = [ |
||||
"ppv-lite86", |
||||
"rand_core", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rand_core" |
||||
version = "0.6.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" |
||||
dependencies = [ |
||||
"getrandom", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "syn" |
||||
version = "1.0.88" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ebd69e719f31e88618baa1eaa6ee2de5c9a1c004f1e9ecdb58e8352a13f20a01" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"unicode-xid", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokio" |
||||
version = "1.17.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" |
||||
dependencies = [ |
||||
"pin-project-lite", |
||||
"tokio-macros", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokio-macros" |
||||
version = "1.7.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"syn", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokiobroadcast" |
||||
version = "0.1.0" |
||||
dependencies = [ |
||||
"rand", |
||||
"tokio", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "unicode-xid" |
||||
version = "0.2.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" |
||||
|
||||
[[package]] |
||||
name = "wasi" |
||||
version = "0.10.2+wasi-snapshot-preview1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" |
@ -0,0 +1,10 @@
|
||||
[package] |
||||
name = "tokiobroadcast" |
||||
version = "0.1.0" |
||||
edition = "2021" |
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
||||
|
||||
[dependencies] |
||||
rand = "0.8.5" |
||||
tokio = { version = "1.17.0", features = ["rt", "sync", "macros", "time"] } |
@ -0,0 +1,29 @@
|
||||
use tokio::sync::broadcast; |
||||
|
||||
#[tokio::main(flavor = "current_thread")] |
||||
async fn main() { |
||||
let (tx, _) = broadcast::channel(1); |
||||
|
||||
for i in 0..30000 { |
||||
let mut rx = tx.subscribe(); |
||||
let _consumer = tokio::spawn(async move { |
||||
while let Ok(mess) = rx.recv().await { |
||||
println!("Consumer {}: {}", i, mess); |
||||
} |
||||
println!("Consumer {} is done", i); |
||||
}); |
||||
} |
||||
|
||||
let producer = tokio::spawn(async move { |
||||
// let mut rng = 3;
|
||||
loop { |
||||
tx.send(42).expect("Failed to send!"); |
||||
tokio::task::yield_now().await; |
||||
// rng += 17 % 200;
|
||||
// let duration = tokio::time::Duration::from_millis(rng);
|
||||
// tokio::time::sleep(duration).await;
|
||||
} |
||||
}); |
||||
|
||||
let _ = producer.await; |
||||
} |
Loading…
Reference in new issue