Explain how to cancel a spawned future.
authorLukeMathWalker <20745048+LukeMathWalker@users.noreply.github.com>
Thu, 16 May 2024 10:43:05 +0000 (12:43 +0200)
committerLukeMathWalker <20745048+LukeMathWalker@users.noreply.github.com>
Thu, 16 May 2024 10:43:05 +0000 (12:43 +0200)
book/src/08_futures/07_cancellation.md

index 4b98c26..557aa72 100644 (file)
@@ -84,6 +84,20 @@ clean-up work. This can be by:
 
 The optimal choice is contextual.
 
+## Cancelling spawned tasks
+
+When you spawn a task using `tokio::spawn`, you can no longer drop it; 
+it belongs to the runtime.  
+Nonetheless, you can use its `JoinHandle` to cancel it if needed:
+
+```rust
+async fn run() {
+    let handle = tokio::spawn(/* some async task */);
+    // Cancel the spawned task
+    handle.abort();
+}
+```
+
 ## Further reading
 
 - Be extremely careful when using `tokio`'s `select!` macro to "race" two different futures.