Struct TerminableThreads

Source
pub struct TerminableThreads<T, const N: usize> { /* private fields */ }
Expand description

A basic thread manager that can signal all threads to terminate / finish early

Note that threads will only terminate if the Arc<AtomicBool> flag is used

Implementations§

Source§

impl<T, const N: usize> TerminableThreads<T, N>

Source

pub fn build() -> (TerminableThreadsBuilder<T, N>, Arc<AtomicBool>)

Source

pub fn terminate(&self)

Signal all threads to terminate and cease operation

§Note

This does not guarantee all threads will terminate, or can be terminated.

Threads will only terminate if the underlying function checks the flag passed to it.s

Source

pub fn join( self, signal_terminate: bool, ) -> [Result<T, Box<dyn Any + Send + 'static>>; N]

Join all threads, optionally signalling termination

Optional termination signalling is useful because no termination signal will let allow a function to run until it has finished naturally, while early termination could stop operations earlier than wanted

§Returns

[Result<T, Error>; N]

An array of length N containing the results of joining each thread

Trait Implementations§

Source§

impl<T: Debug, const N: usize> Debug for TerminableThreads<T, N>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T, const N: usize> Freeze for TerminableThreads<T, N>

§

impl<T, const N: usize> !RefUnwindSafe for TerminableThreads<T, N>

§

impl<T, const N: usize> Send for TerminableThreads<T, N>

§

impl<T, const N: usize> Sync for TerminableThreads<T, N>

§

impl<T, const N: usize> Unpin for TerminableThreads<T, N>

§

impl<T, const N: usize> !UnwindSafe for TerminableThreads<T, N>

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, 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.