pub struct BlockingTaskPool { /* private fields */ }
rayon
only.Expand description
Used to execute blocking tasks on a rayon threadpool from within a tokio runtime.
This is a dedicated threadpool for blocking tasks which are CPU bound. RPC calls that perform blocking IO (disk lookups) are not executed on this pool but on the tokio runtime’s blocking pool, which performs poorly with CPU bound tasks (see https://ryhl.io/blog/async-what-is-blocking/). Once the tokio blocking pool is saturated it is converted into a queue, blocking tasks could then interfere with the queue and block other RPC calls.
See also tokio-docs for more information.
Implementations§
Source§impl BlockingTaskPool
impl BlockingTaskPool
Sourcepub fn build() -> Result<Self, ThreadPoolBuildError>
pub fn build() -> Result<Self, ThreadPoolBuildError>
Convenience function to build a new threadpool with the default configuration.
Uses rayon::ThreadPoolBuilder::build
defaults but
increases the stack size to 8MB.
Sourcepub fn spawn<F, R>(&self, func: F) -> BlockingTaskHandle<R> ⓘ
pub fn spawn<F, R>(&self, func: F) -> BlockingTaskHandle<R> ⓘ
Asynchronous wrapper around Rayon’s
ThreadPool::spawn
.
Runs a function on the configured threadpool, returning a future that resolves with the function’s return value.
If the function panics, the future will resolve to an error.
Sourcepub fn spawn_fifo<F, R>(&self, func: F) -> BlockingTaskHandle<R> ⓘ
pub fn spawn_fifo<F, R>(&self, func: F) -> BlockingTaskHandle<R> ⓘ
Asynchronous wrapper around Rayon’s
ThreadPool::spawn_fifo
.
Runs a function on the configured threadpool, returning a future that resolves with the function’s return value.
If the function panics, the future will resolve to an error.
Trait Implementations§
Source§impl Clone for BlockingTaskPool
impl Clone for BlockingTaskPool
Source§fn clone(&self) -> BlockingTaskPool
fn clone(&self) -> BlockingTaskPool
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for BlockingTaskPool
impl !RefUnwindSafe for BlockingTaskPool
impl Send for BlockingTaskPool
impl Sync for BlockingTaskPool
impl Unpin for BlockingTaskPool
impl !UnwindSafe for BlockingTaskPool
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes