mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-19 00:00:09 +02:00
This patch adds a `blocking` to `tokio-threadpool`. This function serves as a way to annotate sections of code that will perform blocking operations. This informs the thread pool that an additional thread needs to be spawned to replace the current thread, which will no longer be able to process the work queue.
33 lines
1.0 KiB
Rust
33 lines
1.0 KiB
Rust
use callback::Callback;
|
|
|
|
use std::fmt;
|
|
use std::sync::Arc;
|
|
use std::time::Duration;
|
|
|
|
/// Thread pool specific configuration values
|
|
#[derive(Clone)]
|
|
pub(crate) struct Config {
|
|
pub keep_alive: Option<Duration>,
|
|
// Used to configure a worker thread
|
|
pub name_prefix: Option<String>,
|
|
pub stack_size: Option<usize>,
|
|
pub around_worker: Option<Callback>,
|
|
pub after_start: Option<Arc<Fn() + Send + Sync>>,
|
|
pub before_stop: Option<Arc<Fn() + Send + Sync>>,
|
|
}
|
|
|
|
/// Max number of workers that can be part of a pool. This is the most that can
|
|
/// fit in the scheduler state. Note, that this is the max number of **active**
|
|
/// threads. There can be more standby threads.
|
|
pub(crate) const MAX_WORKERS: usize = 1 << 15;
|
|
|
|
impl fmt::Debug for Config {
|
|
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
|
|
fmt.debug_struct("Config")
|
|
.field("keep_alive", &self.keep_alive)
|
|
.field("name_prefix", &self.name_prefix)
|
|
.field("stack_size", &self.stack_size)
|
|
.finish()
|
|
}
|
|
}
|