Crates.io | scoped_stateful_threadpool |
lib.rs | scoped_stateful_threadpool |
version | 0.1.8 |
source | src |
created_at | 2017-10-22 10:25:17.849734 |
updated_at | 2017-10-22 10:25:17.849734 |
description | A library for scoped and cached threadpools that keep a state. |
homepage | |
repository | https://github.com/njaard/scoped-stateful-threadpool-rs |
max_upload_size | |
id | 36543 |
size | 26,083 |
A library for scoped and cached threadpools that keep a state so that you don't need a connection pool.
scoped-threadpool-rs is available on crates.io. Add the following dependency to your Cargo manifest to get the latest version of the 0.1 branch:
[dependencies]
scoped_stateful_threadpool = "0.1.*"
To always get the latest version, add this git repository to your Cargo manifest:
[dependencies.scoped_stateful_threadpool]
git = "https://github.com/njaard/scoped-stateful-threadpool-rs"
extern crate scoped_stateful_threadpool;
use scoped_stateful_threadpool::Pool;
fn main() {
// Create a threadpool holding 4 threads
let mut pool = Pool::new(4, &|| 0);
let mut vec = vec![0, 1, 2, 3, 4, 5, 6, 7];
// Use the threads as scoped threads that can
// reference anything outside this closure
pool.scoped(|scoped| {
// Create references to each element in the vector ...
for e in &mut vec {
// ... and add 1 to it in a seperate thread
scoped.execute(move |state| {
*state += 1; // I can change the state
*e += 1;
});
}
});
assert_eq!(vec, vec![1, 2, 3, 4, 5, 6, 7, 8]);
}