example/
example.rs

1use std::sync::{Arc, Mutex};
2use job_pool::ThreadPool;
3
4pub fn main() {
5    const N: i16 = 1024;
6    let pool = ThreadPool::with_size(32).expect("Expected Ok value");
7    let count = Arc::new(Mutex::new(0));
8
9    let inc = |i: i16| {
10        for _ in 0..N {
11            let count = Arc::clone(&count);
12            pool.execute(move || {
13                let mut n = count.lock().unwrap();
14                *n += i;
15            })
16        }
17    };
18
19    let check = |i: i16| {
20        let n = count.lock().unwrap();
21        assert_eq!(*n,i);
22    };
23
24    inc(1);
25    pool.join();
26    check(N);
27
28    inc(-1);
29    pool.join();
30    check(0);
31}