← index #5857Issue #5947
Related · medium · value 2.350
QUERY · ISSUE

extmod/uasyncio Provide means of scheduling I/O with high priority

openby peterhinchopened 2020-04-02updated 2020-05-04

This was discussed at length in the past, and prototyped with early code of this uasyncio. There is known demand for it in high speed UART applications and audio processing. Salient points:

  • Enable I/O readiness to be tested on every pass of the scheduler.
  • The facility to be available on a per-interface basis. A subset of active interfaces can be selected to run at high priority.

This would improve real time throughput and reduce buffering requirements

CANDIDATE · ISSUE

uasyncio: feature request: multiple event loops

openby traversedaopened 2020-04-20updated 2023-02-10
extmod

I think this needs to go here and not in the micropython-libs repo...

A project I'm working on has two main contexts code can run in. Previously I had modeled those two contexts as two different event loops, with an explicit hand-off between them.

One loop was the "motion control" event loop. It was a higher priority and there were only specific spots it would be able to stop at safely. I could turn it into a blocking function (with the help of interrupts to handle some edge cases) but there are reasons why it's better for it to be co-operative multi-tasking based. The idea was that it would call motionLoop.stop() at regular intervals to allow the general loop to run.

The other loop was the general purpose loop which would run things like user plugins, a web interface, GC, etc.

Any thoughts?

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied