simple-triple-buffer 0.1.0

A simple triple buffer.
Documentation
  • Coverage
  • 75%
    6 out of 8 items documented2 out of 6 items with examples
  • Size
  • Source code size: 21.82 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.67 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • Kimundi/simple_triple_buffer
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Kimundi

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();
}