uasyncio update README.md

pull/12/head
Peter Hinch 2019-12-03 05:47:14 +00:00
rodzic bb534a7eb8
commit 0d5d9146a5
1 zmienionych plików z 8 dodań i 7 usunięć

Wyświetl plik

@ -24,7 +24,7 @@ added 2 Dec, task queue name reverted to `_queue` as this can now be private.
These aim to work efficiently with the new version. All are separate modules to These aim to work efficiently with the new version. All are separate modules to
conserve RAM. Items 1-4 use classes based on `uasyncio.Primitive`. conserve RAM. Items 1-4 use classes based on `uasyncio.Primitive`.
1. `Event`: just moved to separate module. 1. `Event`: Moved to separate module.
2. `Lock`: Kevin Köck's solution. 2. `Lock`: Kevin Köck's solution.
3. `Queue`: Paul's solution adapted for efficiency. 3. `Queue`: Paul's solution adapted for efficiency.
4. `Semaphore`: Also implements `BoundedSemaphore`. 4. `Semaphore`: Also implements `BoundedSemaphore`.
@ -35,8 +35,10 @@ conserve RAM. Items 1-4 use classes based on `uasyncio.Primitive`.
Included as examples of user-contributed primitives - see final section. Included as examples of user-contributed primitives - see final section.
1. `Message`: Awaitable `Event` subclass with a data payload. 1. `Message`: Awaitable `Event` subclass with a data payload.
2. `Barrier`: Multiple tasks wait until all reach a Barrier instance. Or some 2. `Barrier`: Multiple tasks wait until all are either waiting on a Barrier
tasks wait until others have triggered the Barrier instance. instance or have triggered the instance without waiting. Similar to `gather`
without the controlling coro: a barrier is shared between peers and may be
used in loops.
# Test scripts # Test scripts
@ -67,11 +69,10 @@ MicroPython optimised primitives are in `uasyncio/`. Primitives compatible with
# Future uasyncio implementations # Future uasyncio implementations
If part of `uasyncio` is to be implemented in C, it would be good if the following If part of `uasyncio` is to be implemented in C, it would be good if the following
capabilities were retained to facilitate writing efficient add-on modules, e.g. capabilities were retained to facilitate writing efficient add-on modules along the
`Message` and `Barrier` classes: lines of the `Message` and `Barrier` classes:
1. The ability to subclass the `asyncio` compatible primitives. 1. The ability to subclass the `asyncio` compatible primitives.
2. The ability to access `uasyncio`'s task queue and to instantiate task queues 2. The ability to subclass `uasyncio.Primitive` (if you implement it).
(as per the `Event` and `Barrier` classes).
3. Some means of creating waitable classes (e.g. `__iter__`). 3. Some means of creating waitable classes (e.g. `__iter__`).
The mechanism for doing these things might change, but it would be a shame to lose The mechanism for doing these things might change, but it would be a shame to lose