summaryrefslogtreecommitdiffstats
path: root/vendor/elsa/examples/sync.rs
blob: c6d9eb3ccca0cc046f6ff0057dffec77c4e0d27e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use elsa::sync::*;

use std::sync::Arc;
use std::thread;
use std::time::Duration;

fn main() {
    let a = Arc::new(FrozenMap::new());
    for i in 1..10 {
        let b = a.clone();
        thread::spawn(move || {
            b.insert(i, i.to_string());
            thread::sleep(Duration::from_millis(300));
            loop {
                if let Some(opposite) = b.get(&(10 - i)) {
                    assert!(opposite.parse::<i32>().unwrap() == 10 - i);
                    break;
                } else {
                    thread::sleep(Duration::from_millis(200));
                }
            }
        });
    }

    thread::sleep(Duration::from_millis(1000));
}