Skip to content

Commit 9397663

Browse files
authored
Update README.md
1 parent acf0f5c commit 9397663

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
TaskManagerIO is an evolution of the task management class that was originally situated in IoAbstraction. It has been broken out, improved to support events, and threaded access. We are in a new era of embedded development, where RTOS, multiple threads (and even cores) have become a relatity. To make task manager viable going forward, it needed to be capable in these environment, while still protecting tasks from multithreaded concerns. We are pleased to say, this version meets both goals.
66

7-
Further, any sketch that worked on IoAbstraction task manager will work with this library unaffected. Further, it uses a lock free design, based on "compare and exchange" to acheive thread safety on larger boards, atomic operations on AVR, and interrupt locking back-up on other boards.
7+
Importantly, any sketch that worked on IoAbstraction task manager will work with this library unaffected. Below, we list the main features of TaskManagerIO:
88

99
* Simple coroutines style task management, execute now, at a point in time, or on a schedule.
1010
* Your tasks do not need to be thread or interrupt safe, they will only be called from task manager.
@@ -86,6 +86,8 @@ TaskManagerIO library is not a full RTOS, rather it can be used on top of FreeRT
8686

8787
## Multi-tasking - advanced usage
8888

89+
TaskManager uses a lock free design, based on "compare and exchange" to acheive thread safety on larger boards, atomic operations on AVR, and interrupt locking back-up on other boards. Below, we discuss the multi-threaded features in more detail.
90+
8991
* On any board, it is safe to add tasks and raise events from any thread. We use whatever atomic operations are available for that board to ensure safety.
9092
* On any board, you can start another thread and run a task manager on it. Only ever call task-manager's runLoop() from the same thread.
9193
* On ESP32 FreeRTOS and mbed RTOS6 it is safe to add tasks to a taskManager from another core, on these platforms task manager uses the processors compare and exchange functionality to ensure thread safety as much as possible.

0 commit comments

Comments
 (0)