pub struct CpuContext { /* private fields */ }Expand description
Reusable CPU execution context carrying CPU parallelism policy.
CpuContext stores the requested thread count as a kernel-level
parallelism hint and owns the Rayon pool used by multi-threaded CPU work.
§Examples
use tenferro_cpu::CpuContext;
let ctx = CpuContext::with_threads(1).unwrap();
let value = ctx.install(|| 1 + 1);
assert_eq!(value, 2);
assert_eq!(ctx.num_threads(), 1);Implementations§
Source§impl CpuContext
impl CpuContext
Sourcepub fn from_env() -> Self
pub fn from_env() -> Self
Create a CPU context from RAYON_NUM_THREADS, or fall back to the
process-visible CPU count.
§Examples
use tenferro_cpu::CpuContext;
let ctx = CpuContext::from_env();
assert!(ctx.num_threads() >= 1);Sourcepub fn try_from_env() -> Result<Self>
pub fn try_from_env() -> Result<Self>
Try to create a CPU context from RAYON_NUM_THREADS.
§Examples
use tenferro_cpu::CpuContext;
let ctx = CpuContext::try_from_env()
.unwrap_or_else(|_| CpuContext::with_threads(1).unwrap());
assert!(ctx.num_threads() >= 1);Sourcepub fn with_threads(num_threads: usize) -> Result<Self>
pub fn with_threads(num_threads: usize) -> Result<Self>
Sourcepub fn num_threads(&self) -> usize
pub fn num_threads(&self) -> usize
Return this context’s CPU parallelism hint.
§Examples
use tenferro_cpu::CpuContext;
let ctx = CpuContext::with_threads(2).unwrap();
assert_eq!(ctx.num_threads(), 2);Trait Implementations§
Source§impl Clone for CpuContext
impl Clone for CpuContext
Source§fn clone(&self) -> CpuContext
fn clone(&self) -> CpuContext
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for CpuContext
impl !RefUnwindSafe for CpuContext
impl Send for CpuContext
impl Sync for CpuContext
impl Unpin for CpuContext
impl UnsafeUnpin for CpuContext
impl !UnwindSafe for CpuContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more