thread-broadcaster

release GitHub License Documentation

Thread Broadcaster is a Single Channel Multi-Producer (SPMC) library that enables the sending of notifications between threads. Unlike most Multi-Producer Multi-Consumer (MPMC) implementations, Thread Broadcaster ensures that all listeners receive the data, rather than just the first one.

🤔 Features

⚡️ Quickstart

```rust use core::time; use std::thread;

use thread_broadcaster::{BroadcastListener, Broadcaster};

fn main() { let (b, s) = Broadcaster::::new(); let s2 = s.clone(); thread::spawn(move || { let ls1 = BroadcastListener::registerbroadcastlistener(s); for msg in ls1.channel { println!( "got broadcast with data: {} on thread {:#?}", msg, thread::current().id() ); } }); thread::spawn(move || { let ls2 = BroadcastListener::registerbroadcastlistener(s2); for msg in ls2.channel { println!( "got broadcast with data: {} on thread {:#?}", msg, thread::current().id() ); } }); thread::spawn(move || { // we wait for registration thread::sleep(time::Duration::fromsecs(1)); b.broadcast("something to broadcast".tostring()); // we wait for listeners to pickup before being dropped thread::sleep(time::Duration::from_secs(2)); }) .join() .unwrap(); } ```

⬇️ Installation

cargo add thread-broadcaster

🤝 Contributions

⚖ License

Copyright 2022 Hemanth Krishna

Licensed under MIT License : https://opensource.org/licenses/MIT

Made with ❤ and multiple cups of coffee