Skip to main content

TPool

Struct TPool 

Source
pub struct TPool { /* private fields */ }
Expand description

Thread pool handle — equivalent to TPool* in the C API.

TPool_createTPool::new TPool_freeDrop for TPool (joins workers automatically) TPool_submitJobTPool::submit_job TPool_jobsCompletedTPool::jobs_completed

Implementations§

Source§

impl TPool

Source

pub fn new(nb_threads: usize, queue_size: usize) -> Option<Self>

TPool_create(nbThreads, queueSize) — returns None on failure.

nbThreads must be ≥ 1, queueSize must be ≥ 1. The C code allocates one extra queue slot to distinguish full vs. empty; here crossbeam_channel::bounded(queue_size + nb_threads) plays the same role as the semaphore initialised to queueSize + nbWorkers in the Windows implementation.

Source

pub fn submit_job(&self, job: Box<dyn FnOnce() + Send + 'static>)

TPool_submitJob(ctx, job_function, arg) — may block if queue is full.

In C the caller passes a raw void (*fn)(void*) + void* arg. In Rust the equivalent is a Box<dyn FnOnce() + Send> closure that has already captured its argument, eliminating the void* anti-pattern.

Source

pub fn jobs_completed(&self)

TPool_jobsCompleted(ctx) — blocks until all submitted jobs have finished.

Does NOT shut down the pool; it can accept further jobs afterwards, identical to the C semantics.

Trait Implementations§

Source§

impl Drop for TPool

Source§

fn drop(&mut self)

TPool_free — waits for all running jobs to finish then tears down the rayon pool. rayon’s ThreadPool already joins workers on drop, so we only need to ensure no jobs are still in-flight first.

Auto Trait Implementations§

§

impl Freeze for TPool

§

impl !RefUnwindSafe for TPool

§

impl Send for TPool

§

impl Sync for TPool

§

impl Unpin for TPool

§

impl UnsafeUnpin for TPool

§

impl !UnwindSafe for TPool

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.