Trait entangled::ParallelSliceMut [−][src]
Helper functions to iterate over a mutable slice in parallel.
Provided methods
fn par_chunk_map_mut<F, R>(
&mut self,
task_pool: &TaskPool,
chunk_size: usize,
f: F
) -> Vec<R> where
F: Fn(&mut [T]) -> R + Send + Sync,
R: Send + 'static,
[src]
&mut self,
task_pool: &TaskPool,
chunk_size: usize,
f: F
) -> Vec<R> where
F: Fn(&mut [T]) -> R + Send + Sync,
R: Send + 'static,
Iterates in parallel over a mutable slice with a given chunk size.
Example
use entangled::*; let mut v = vec![42; 1000]; let task_pool = TaskPool::default(); let outputs = v.par_chunk_map_mut(&task_pool, 512, |numbers| -> i32 { for number in numbers.iter_mut() { *number *= 2; } numbers.iter().sum() }); let mut sum = 0; for output in outputs { sum += output; } assert_eq!(sum, 1000 * 42 * 2); assert_eq!(v[0], 84);
fn par_splat_map_mut<F, R>(
&mut self,
task_pool: &TaskPool,
max_tasks: Option<usize>,
f: F
) -> Vec<R> where
F: Fn(&mut [T]) -> R + Send + Sync,
R: Send + 'static,
[src]
&mut self,
task_pool: &TaskPool,
max_tasks: Option<usize>,
f: F
) -> Vec<R> where
F: Fn(&mut [T]) -> R + Send + Sync,
R: Send + 'static,
Iterates in parallel over a mutable slice with a given maximum of tasks. max_tasks
is None, it
will use the thread number of the TaskPool
.
Example
use entangled::*; let mut v = vec![42; 1000]; let task_pool = TaskPool::default(); let outputs = v.par_splat_map_mut(&task_pool, None, |numbers| -> i32 { for number in numbers.iter_mut() { *number *= 2; } numbers.iter().sum() }); let mut sum = 0; for output in outputs { sum += output; } assert_eq!(sum, 1000 * 42 * 2); assert_eq!(v[0], 84);