mirror of https://github.com/KaiserY/trpl-zh-cn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
811 B
41 lines
811 B
// ANCHOR: here
|
|
use std::thread;
|
|
|
|
pub struct ThreadPool {
|
|
threads: Vec<thread::JoinHandle<()>>,
|
|
}
|
|
|
|
impl ThreadPool {
|
|
// --snip--
|
|
// ANCHOR_END: here
|
|
/// Create a new ThreadPool.
|
|
///
|
|
/// The size is the number of threads in the pool.
|
|
///
|
|
/// # Panics
|
|
///
|
|
/// The `new` function will panic if the size is zero.
|
|
// ANCHOR: here
|
|
pub fn new(size: usize) -> ThreadPool {
|
|
assert!(size > 0);
|
|
|
|
let mut threads = Vec::with_capacity(size);
|
|
|
|
for _ in 0..size {
|
|
// create some threads and store them in the vector
|
|
}
|
|
|
|
ThreadPool { threads }
|
|
}
|
|
// --snip--
|
|
// ANCHOR_END: here
|
|
|
|
pub fn execute<F>(&self, f: F)
|
|
where
|
|
F: FnOnce() + Send + 'static,
|
|
{
|
|
}
|
|
// ANCHOR: here
|
|
}
|
|
// ANCHOR_END: here
|