1use ref_kman::Ref;
2
3fn main() {
4 let data = Ref::new(0);
5 let tmp_data = data.clone();
6
7 let thread_1 = std::thread::spawn(move || {
8 let data = tmp_data;
9 for _ in 0..10000000 {
10 let mut data = data.get_mut();
11 *data += 1;
12 }
13 });
14
15 let tmp_data = data.clone();
16
17 let thread_2 = std::thread::spawn(move || {
18 let data = tmp_data;
19 for _ in 0..10000000 {
20 data.mut_scope(|data| {
21 *data += 1;
22 })
23 }
24 });
25
26 let tmp_data = data.clone();
27
28 let thread_3 = std::thread::spawn(move || {
29 let data = tmp_data;
30 loop {
31 if *data == 20000000 {
32 break;
33 }
34 println!("D: {}", data);
35 }
36 });
37
38 thread_1.join().unwrap();
39 thread_2.join().unwrap();
40 thread_3.join().unwrap();
41
42 println!("Data: {}", data)
43}