use paradis::{BoundedParAccess, IntoParAccess};
use std::thread::scope;
fn par_even_odd(numbers: &mut [i32]) {
let n = numbers.len();
let access = numbers.into_par_access();
scope(|s| {
s.spawn(|| {
for i in (0..n).step_by(2) {
unsafe {
*access.get_unsync(i) *= 2;
}
}
});
s.spawn(|| {
for i in (1..n).step_by(2) {
unsafe {
*access.get_unsync(i) *= 4;
}
}
});
});
}
fn main() {
let mut numbers = [0, 1, 2, 3, 4, 5, 6, 7];
par_even_odd(&mut numbers);
assert_eq!(numbers, [0, 4, 4, 12, 8, 20, 12, 28]);
}