bondi

Crates.iobondi
lib.rsbondi
version0.1.2
sourcesrc
created_at2021-01-09 10:19:11.493624
updated_at2021-01-11 17:25:06.595871
descriptionSingle producer, multi consumer lock-free ring buffer (experimental)
homepage
repositoryhttps://github.com/blasrodri/bondi
max_upload_size
id336146
size13,737
Blas Rodriguez Irizar (blasrodri)

documentation

https://docs.rs/bondi/

README

Bondi - lock-free single producer multi producer ring buffer

Bondi is yet another attempt of producing a lock-free, bounded, single-producer, multi-consumer data structure.

Note: this is an experimental project. Expect things to break, and change.

Usage

    // initialize a writer and two readers
    // send 100 `Message`s, and receive them from different threads
    struct Message(usize)

    fn main() {
        let bondi = Bondi::new(100);
        let writer = bondi.get_tx().unwrap();
        let reader = bondi.get_rx().unwrap();
        let reader2 = bondi.get_rx().unwrap();

        std::thread::spawn(move || {
            for i in 0..100 {
                writer.write(Message(i));
            }
        });

        std::thread::spawn(move || {
            let _ = reader.read();
        });

        std::thread::spawn(move || {
            let _ = reader2.read();
        }).join().unwrap();
    }

Inspiration sources

Disruptor

Bus

Turbine

Commit count: 21

cargo fmt