Skip to main content

Pool

Struct Pool 

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

A pool of worker threads that execute submitted tasks concurrently.

The Pool manages a set of worker threads, each with its own local work queue. Tasks are distributed between threads using a global Injector and work stealing between local queues.

When dropped, the pool gracefully shuts down by preventing new submissions and joining all worker threads.

§Examples

use foofighters::pool::PoolBuilder;

let pool = PoolBuilder::new()
    .set_worker_count(4)
    .build();

pool.spawn(|| println!("Task executed!"));
// The pool is automatically joined when dropped.

Implementations§

Source§

impl Pool

Source

pub fn spawn<T>(&self, task: T) -> TaskSubmission
where T: FnOnce() + Send + 'static,

Submits a new task to the pool for concurrent execution.

The task must implement FnOnce() + Send + 'static. If the pool has been shut down, the task will be rejected with TaskSubmission::Blocked.

§Examples
use foofighters::pool::{PoolBuilder, TaskSubmission};

let pool = PoolBuilder::new().build();
let result = pool.spawn(|| println!("Running a task"));
assert!(result.into_result().is_ok());

Trait Implementations§

Source§

impl Debug for Pool

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Drop for Pool

Source§

fn drop(&mut self)

Gracefully shuts down the pool by joining all worker threads.

This method is automatically invoked when the pool goes out of scope. It prevents further submissions and waits for all active worker threads to complete their tasks.

Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Pool

§

impl !UnwindSafe for Pool

§

impl Freeze for Pool

§

impl Send for Pool

§

impl Sync for Pool

§

impl Unpin for Pool

§

impl UnsafeUnpin for Pool

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.