orx-parallel 4.0.0

Performant parallel computations with an expressive iterator API.
Documentation
use crate::*;
use std::sync::atomic::{AtomicUsize, Ordering};

#[test]
fn tasks_macro() {
    let counter = AtomicUsize::new(0);

    let t0 = tasks![];
    Pool::global().run_all(t0);
    assert_eq!(counter.load(Ordering::Relaxed), 0);

    let t1 = tasks![|| {
        counter.fetch_add(1, Ordering::Relaxed);
    }];
    Pool::global().run_all(t1);
    assert_eq!(counter.load(Ordering::Relaxed), 1);

    let t3 = tasks![
        || {
            counter.fetch_add(10, Ordering::Relaxed);
        },
        || {
            counter.fetch_add(100, Ordering::Relaxed);
        },
        || {
            counter.fetch_add(1000, Ordering::Relaxed);
        },
    ];
    Pool::global().run_all(t3);
    assert_eq!(counter.load(Ordering::Relaxed), 1111);
}