Struct embassy_executor::raw::TaskPool
source · pub struct TaskPool<F: Future + 'static, const N: usize> { /* private fields */ }
Expand description
原始存储器,可以保存多个相同类型的任务
这本质上是一个 [TaskStorage<F>; N]
Raw storage that can hold up to N tasks of the same type.
This is essentially a [TaskStorage<F>; N]
.
Implementations§
source§impl<F: Future + 'static, const N: usize> TaskPool<F, N>
impl<F: Future + 'static, const N: usize> TaskPool<F, N>
sourcepub const fn new() -> Self
pub const fn new() -> Self
创建一个 TaskPool, 其中的所有任务都是未创建的状态
Create a new TaskPool, with all tasks in non-spawned state.
sourcepub fn spawn(
&'static self,
future: impl FnOnce() -> F
) -> SpawnToken<impl Sized>
pub fn spawn( &'static self, future: impl FnOnce() -> F ) -> SpawnToken<impl Sized>
尝试在池中创建任务
在 TaskStorage::spawn()
可以看到详情
这个方法会遍历池,并且在第一个空闲的存储位置创建任务。如果没有空闲的,就会返回一个空的 SpawnToken,
空的 SpawnToken 会导致 Spawner::spawn()
返回错误。
Try to spawn a task in the pool.
See TaskStorage::spawn()
for details.
This will loop over the pool and spawn the task in the first storage that
is currently free. If none is free, a “poisoned” SpawnToken is returned,
which will cause Spawner::spawn()
to return the error.
Auto Trait Implementations§
impl<F, const N: usize> !RefUnwindSafe for TaskPool<F, N>
impl<F, const N: usize> Send for TaskPool<F, N>where F: Send,
impl<F, const N: usize> Sync for TaskPool<F, N>
impl<F, const N: usize> Unpin for TaskPool<F, N>where F: Unpin,
impl<F, const N: usize> !UnwindSafe for TaskPool<F, N>
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
Mutably borrows from an owned value. Read more