aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor/README.md
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-08-17 23:22:52 +0000
committerGitHub <[email protected]>2022-08-17 23:22:52 +0000
commitbe55d2a39eb399d693d11f37dfa4b87cd2bd3c7a (patch)
tree2ef0b4d6f9b1c02dac2589e7b57982c20cbc0e66 /embassy-executor/README.md
parent1c5b54a4823d596db730eb476c3ab78110557214 (diff)
parent5daa173ce4b153a532b4daa9e94c7a248231f25b (diff)
Merge #909
909: Split embassy-time from embassy-executor. r=Dirbaio a=Dirbaio For now this will fail to link unless you enable `embassy-executor/integrated-timers`. i'll add an executor-independent timer queue to `embassy-time` later. Co-authored-by: Dario Nieuwenhuis <[email protected]>
Diffstat (limited to 'embassy-executor/README.md')
-rw-r--r--embassy-executor/README.md11
1 files changed, 11 insertions, 0 deletions
diff --git a/embassy-executor/README.md b/embassy-executor/README.md
new file mode 100644
index 000000000..47d0cb8a2
--- /dev/null
+++ b/embassy-executor/README.md
@@ -0,0 +1,11 @@
1# embassy-executor
2
3An async/await executor designed for embedded usage.
4
5- No `alloc`, no heap needed. Task futures are statically allocated.
6- No "fixed capacity" data structures, executor works with 1 or 1000 tasks without needing config/tuning.
7- Integrated timer queue: sleeping is easy, just do `Timer::after(Duration::from_secs(1)).await;`.
8- No busy-loop polling: CPU sleeps when there's no work to do, using interrupts or `WFE/SEV`.
9- Efficient polling: a wake will only poll the woken task, not all of them.
10- Fair: a task can't monopolize CPU time even if it's constantly being woken. All other tasks get a chance to run before a given task gets polled for the second time.
11- Creating multiple executor instances is supported, to run tasks with multiple priority levels. This allows higher-priority tasks to preempt lower-priority tasks.