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

Spawns a new thread pool with threads threads.

Panics

This function will panic if threads is 0.

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();
        panic!()
    });
}

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