pub struct ComputeTaskPool(/* private fields */);
Expand description
A newtype for a task pool for CPU-intensive work that must be completed to deliver the next frame
See TaskPool
documentation for details on Bevy tasks.
AsyncComputeTaskPool
should be preferred if the work does not have to be
completed before the next frame.
Implementations§
source§impl ComputeTaskPool
impl ComputeTaskPool
sourcepub fn get_or_init(f: impl FnOnce() -> TaskPool) -> &'static ComputeTaskPool
pub fn get_or_init(f: impl FnOnce() -> TaskPool) -> &'static ComputeTaskPool
Gets the global ComputeTaskPool
instance, or initializes it with f
.
sourcepub fn try_get() -> Option<&'static ComputeTaskPool>
pub fn try_get() -> Option<&'static ComputeTaskPool>
Attempts to get the global ComputeTaskPool
instance, or returns None
if it is not initialized.
sourcepub fn get() -> &'static ComputeTaskPool
pub fn get() -> &'static ComputeTaskPool
Gets the global ComputeTaskPool
instance.
§Panics
Panics if the global instance has not been initialized yet.
Methods from Deref<Target = TaskPool>§
sourcepub fn thread_num(&self) -> usize
pub fn thread_num(&self) -> usize
Return the number of threads owned by the task pool
sourcepub fn scope<'env, F, T>(&self, f: F) -> Vec<T>
pub fn scope<'env, F, T>(&self, f: F) -> Vec<T>
Allows spawning non-'static
futures on the thread pool. The function takes a callback,
passing a scope object into it. The scope object provided to the callback can be used
to spawn tasks. This function will await the completion of all tasks before returning.
This is similar to rayon::scope
and crossbeam::scope
sourcepub fn scope_with_executor<'env, F, T>(
&self,
_tick_task_pool_executor: bool,
_thread_executor: Option<&ThreadExecutor<'_>>,
f: F,
) -> Vec<T>
pub fn scope_with_executor<'env, F, T>( &self, _tick_task_pool_executor: bool, _thread_executor: Option<&ThreadExecutor<'_>>, f: F, ) -> Vec<T>
Allows spawning non-'static
futures on the thread pool. The function takes a callback,
passing a scope object into it. The scope object provided to the callback can be used
to spawn tasks. This function will await the completion of all tasks before returning.
This is similar to rayon::scope
and crossbeam::scope
sourcepub fn spawn<T>(&self, future: impl Future<Output = T> + 'static) -> Task<T> ⓘwhere
T: 'static,
pub fn spawn<T>(&self, future: impl Future<Output = T> + 'static) -> Task<T> ⓘwhere
T: 'static,
Spawns a static future onto the thread pool. The returned Task is a future, which can be polled to retrieve the output of the original future. Dropping the task will attempt to cancel it. It can also be “detached”, allowing it to continue running without having to be polled by the end-user.
If the provided future is non-Send
, TaskPool::spawn_local
should be used instead.
sourcepub fn spawn_local<T>(
&self,
future: impl Future<Output = T> + 'static,
) -> Task<T> ⓘwhere
T: 'static,
pub fn spawn_local<T>(
&self,
future: impl Future<Output = T> + 'static,
) -> Task<T> ⓘwhere
T: 'static,
Spawns a static future on the JS event loop. This is exactly the same as TaskPool::spawn
.
sourcepub fn with_local_executor<F, R>(&self, f: F) -> Rwhere
F: FnOnce(&LocalExecutor<'_>) -> R,
pub fn with_local_executor<F, R>(&self, f: F) -> Rwhere
F: FnOnce(&LocalExecutor<'_>) -> R,
Runs a function with the local executor. Typically used to tick the local executor on the main thread as it needs to share time with other things.
use bevy_tasks::TaskPool;
TaskPool::new().with_local_executor(|local_executor| {
local_executor.try_tick();
});
Trait Implementations§
source§impl Debug for ComputeTaskPool
impl Debug for ComputeTaskPool
Auto Trait Implementations§
impl Freeze for ComputeTaskPool
impl RefUnwindSafe for ComputeTaskPool
impl Send for ComputeTaskPool
impl Sync for ComputeTaskPool
impl Unpin for ComputeTaskPool
impl UnwindSafe for ComputeTaskPool
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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