#triple #buffer #double

simple-triple-buffer

A simple triple buffer

1 unstable release

0.1.0 Feb 26, 2021

#21 in #triple

MIT/Apache

10KB
177 lines

Example

#[derive(Clone)]
struct State {
    v: u64,
}

use std::time::Duration;

use simple_triple_buffer::new_with;

fn main() {
    let (mut w, mut r) = new_with(State { v: 0 }, |s| {
        println!("Cloned state!");
        s.clone()
    });

    let tw = std::thread::spawn(move || loop {
        w.write_new(|last, new| {
            new.v = last.v + 1;
        });
    });

    let tr = std::thread::spawn(move || {
        let mut last = 0;
        loop {
            let state = r.read_newest();
            println!("Value: {} (+{})", state.v, state.v - last);
            last = state.v;
            std::thread::sleep(Duration::from_millis(20));
        }
    });

    tw.join().unwrap();
    tr.join().unwrap();
}

No runtime deps