You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Some numbers with 200 concurrent tasks:
- Plain cooperative rescheduling of a task until the switch to a
different task: 140-150 cycles
- If the task suspends itself (eg: waiting on a mutex without timeout):
126-137 cycles (this only measures the yielding time, not the overhead
induced by the mutex)
- If the task sleeps: 268-1700 cycles (1700 is for the 200th task that
must be inserted at the end of the sleep_queue since it wakes up last).
This is O(n). Also there is an overhead in the tick interrupt when all
these tasks are woken up: the max tick interrupt time is close to
4000cycles (O(n) with the number of tasks waking up on the same tick)
(otherwise being ~250cycles if no tasks wake).
Time slicing support added (switch between tasks of the same
priority on the tick interval). This is by default off.
Tasks can now be awaited and the memory freed. I used this to implement
cleanup for radio/timer.zig, but for the tasks spawned by the wifi
driver it is more complicated so I will leave this for a later PR.
Unit tests for the esp port now run on CI.
0 commit comments