Struct threadpool::ThreadPool
[−]
[src]
pub struct ThreadPool {
// some fields omitted
}A thread pool used to execute functions in parallel.
Spawns n worker threads and replenishes the pool if any worker threads
panic.
Example
use threadpool::ThreadPool; use std::sync::mpsc::channel; let n_workers = 4; let n_jobs = 8; let pool = ThreadPool::new(n_workers); let (tx, rx) = channel(); for i in 0..n_jobs { let tx = tx.clone(); pool.execute(move|| { tx.send(i).unwrap(); }); } assert_eq!(rx.iter().take(n_jobs).fold(0, |a, b| a + b), 28);
Methods
impl ThreadPool[src]
fn new(threads: usize) -> ThreadPool
fn new_with_name(name: String, threads: usize) -> ThreadPool
Spawns a new thread pool with threads threads. Each thread will have the
name name.
Panics
This function will panic if threads is 0.
Example
use std::sync::mpsc::sync_channel; use std::thread; use threadpool::ThreadPool; let (tx, rx) = sync_channel(0); let mut pool = ThreadPool::new_with_name("worker".into(), 2); for _ in 0..2 { let tx = tx.clone(); pool.execute(move || { let name = thread::current().name().unwrap().to_owned(); tx.send(name).unwrap(); }); } for thread_name in rx.iter().take(2) { assert_eq!("worker", thread_name); }
fn execute<F>(&self, job: F) where F: FnOnce() + Send + 'static
Executes the function job on a thread in the pool.
fn active_count(&self) -> usize
Returns the number of currently active threads.
fn max_count(&self) -> usize
Returns the number of created threads
fn set_threads(&mut self, threads: usize)
Sets the number of threads to use as threads.
Can be used to change the threadpool size during runtime.
Will not abort already running or waiting threads.
Trait Implementations
impl Clone for ThreadPool[src]
fn clone(&self) -> ThreadPool
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0
Performs copy-assignment from source. Read more