docs,examples: graceful shutdown — new examples/graceful_shutdown.rs, README 'Stopping actors', named_genserver uses shutdown(), Deep Dive terminate note, ROADMAP open items

This commit is contained in:
Claude (sandbox)
2026-08-19 16:28:42 +00:00
parent 6ceb138f5f
commit 849a424c8e
5 changed files with 179 additions and 1 deletions
+15
View File
@@ -54,6 +54,21 @@ run(|| {
});
```
## Stopping actors
Two strengths, as in OTP. `request_stop(pid)` is `exit(Pid, kill)`: a cooperative
hard stop, unwinding at the actor's next observation point. `request_shutdown(pid)`
is `exit(Pid, shutdown)`: an actor that traps exits (`trap_exit()`, or
`ctx.trap_exit()` in a gen_server / `cx.trap_exit()` in a gen_statem) receives it
as a signal — `handle_shutdown` / a `shutdown` row — and may drain before stopping
itself; one that does not trap is stopped outright. Supervisors trap:
`request_shutdown(sup)` tears the tree down top-down, each child per its
`ChildSpec` `Shutdown` policy (`Timeout(d)`, `Infinity`, `BrutalKill`). The run's
root actor returning means "the program is done": every top-level actor gets a
`request_shutdown`, and `run()` returns when they are gone. From outside the
runtime (a signal thread), `Runtime::handle().request_shutdown(pid)` does the
same. `examples/graceful_shutdown.rs` shows all of it.
## Layout
```