diff --git a/benches/Cargo.toml b/benches/Cargo.toml index c1d13bac279..048d6ee7725 100644 --- a/benches/Cargo.toml +++ b/benches/Cargo.toml @@ -12,7 +12,6 @@ tokio = { version = "1.5.0", path = "../tokio", features = ["full"] } criterion = "0.5.1" rand = "0.8" rand_chacha = "0.3" -num_cpus = "1.16.0" [dev-dependencies] tokio-util = { version = "0.7.0", path = "../tokio-util", features = ["full"] } diff --git a/tokio/Cargo.toml b/tokio/Cargo.toml index 283ae66bd92..4101d250df1 100644 --- a/tokio/Cargo.toml +++ b/tokio/Cargo.toml @@ -71,10 +71,7 @@ process = [ ] # Includes basic task execution capabilities rt = [] -rt-multi-thread = [ - "num_cpus", - "rt", -] +rt-multi-thread = ["rt"] signal = [ "libc", "mio/os-poll", @@ -96,7 +93,6 @@ pin-project-lite = "0.2.11" # Everything else is optional... bytes = { version = "1.0.0", optional = true } mio = { version = "0.8.9", optional = true, default-features = false } -num_cpus = { version = "1.8.0", optional = true } parking_lot = { version = "0.12.0", optional = true } [target.'cfg(not(target_family = "wasm"))'.dependencies] diff --git a/tokio/src/loom/std/mod.rs b/tokio/src/loom/std/mod.rs index 0c611af162a..985d8d73aeb 100644 --- a/tokio/src/loom/std/mod.rs +++ b/tokio/src/loom/std/mod.rs @@ -84,6 +84,8 @@ pub(crate) mod sync { pub(crate) mod sys { #[cfg(feature = "rt-multi-thread")] pub(crate) fn num_cpus() -> usize { + use std::num::NonZeroUsize; + const ENV_WORKER_THREADS: &str = "TOKIO_WORKER_THREADS"; match std::env::var(ENV_WORKER_THREADS) { @@ -97,7 +99,9 @@ pub(crate) mod sys { assert!(n > 0, "\"{}\" cannot be set to 0", ENV_WORKER_THREADS); n } - Err(std::env::VarError::NotPresent) => usize::max(1, num_cpus::get()), + Err(std::env::VarError::NotPresent) => { + std::thread::available_parallelism().map_or(1, NonZeroUsize::get) + } Err(std::env::VarError::NotUnicode(e)) => { panic!( "\"{}\" must be valid unicode, error: {:?}",