Struct deno_unsync::JoinSet
source · pub struct JoinSet<T> { /* private fields */ }
Expand description
Wraps the tokio JoinSet
to make it !Send-friendly and to make it easier and safer for us to
poll while empty.
Implementations§
source§impl<T: 'static> JoinSet<T>
impl<T: 'static> JoinSet<T>
sourcepub fn spawn<F>(&mut self, task: F) -> AbortHandlewhere
F: Future<Output = T> + 'static,
T: 'static,
pub fn spawn<F>(&mut self, task: F) -> AbortHandlewhere
F: Future<Output = T> + 'static,
T: 'static,
Spawn the provided task on the JoinSet
, returning an AbortHandle
that can be used to remotely cancel the task.
The provided future will start running in the background immediately
when this method is called, even if you don’t await anything on this
JoinSet
.
§Panics
This method panics if called outside of a Tokio runtime.
sourcepub fn poll_join_next(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<T, JoinError>>
pub fn poll_join_next( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<T, JoinError>>
Waits until one of the tasks in the set completes and returns its output.
§Cancel Safety
This method is cancel safe. If join_next
is used as the event in a tokio::select!
statement and some other branch completes first, it is guaranteed that no tasks were
removed from this JoinSet
.
sourcepub async fn join_next(&mut self) -> Option<Result<T, JoinError>>
pub async fn join_next(&mut self) -> Option<Result<T, JoinError>>
Waits until one of the tasks in the set completes and returns its output.
Returns None
if the set is empty.
§Cancel Safety
This method is cancel safe. If join_next
is used as the event in a tokio::select!
statement and some other branch completes first, it is guaranteed that no tasks were
removed from this JoinSet
.
sourcepub fn abort_all(&mut self)
pub fn abort_all(&mut self)
Aborts all tasks on this JoinSet
.
This does not remove the tasks from the JoinSet
. To wait for the tasks to complete
cancellation, you should call join_next
in a loop until the JoinSet
is empty.
sourcepub fn detach_all(&mut self)
pub fn detach_all(&mut self)
Removes all tasks from this JoinSet
without aborting them.
The tasks removed by this call will continue to run in the background even if the JoinSet
is dropped.