concurrrent-slice
This crate extends slice-type types with methods for concurrent processing.
Example
The slice.concurrent_chunks(chunk_size)
divides the any owned slice-like types, such as Vec<T>
,
into roughly equally sized chunks. Each chunk is filled with a constant on separate threads.
The original slice is then recovered from the guard given by the chunks.
let data: = vec!;
// Divide the vec into three chunks, each has length 4.
let mut chunks = data.concurrent_chunks;
let mut chunk1 = chunks.next.unwrap;
let mut chunk2 = chunks.next.unwrap;
let mut chunk3 = chunks.next.unwrap;
// Keeps the guard that will be used to recover the data.
let guard = chunks.guard;
// Process each chunk concurrently.
let handle1 = spawn;
let handle2 = spawn;
let handle3 = spawn;
handle1.join.unwrap;
handle2.join.unwrap;
handle3.join.unwrap;
// We drop the chunks iterator to make sure the guard is the only reference to data.
drop;
// Recover the data.
let data = guard.unwrap;
assert_eq!;
License
MIT License. See LICENSE file.