pub struct TaskPool {}
multi_threaded
only.Expand description
A thread pool for executing tasks. Tasks are futures that are being automatically driven by the pool on threads owned by the pool. In this case - main thread only.
Implementations§
Source§impl TaskPool
impl TaskPool
Sourcepub fn get_thread_executor() -> Arc<ThreadExecutor<'static>>
pub fn get_thread_executor() -> Arc<ThreadExecutor<'static>>
Just create a new ThreadExecutor
for wasm
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) -> FakeTaskwhere
T: 'static,
pub fn spawn<T>(&self, future: impl Future<Output = T> + 'static) -> FakeTaskwhere
T: 'static,
Spawns a static future onto the thread pool. The returned Task is a future. It can also be cancelled and “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,
) -> FakeTaskwhere
T: 'static,
pub fn spawn_local<T>(
&self,
future: impl Future<Output = T> + 'static,
) -> FakeTaskwhere
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§
Auto Trait Implementations§
impl Freeze for TaskPool
impl RefUnwindSafe for TaskPool
impl Send for TaskPool
impl Sync for TaskPool
impl Unpin for TaskPool
impl UnwindSafe for TaskPool
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,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)