I was currently evaluating the multi-threading capabilities of Open AT OS. The key word from the documentation was multi-tasking. So let me sum up and correct me if I’m wrong: Open AT OS only supports “tasks”. There is no thread library. A task is a method that can be called on different puposes like timer or other signals/interrupts. As far as I see, the difference between a task and a thread is, that all tasks need to be defined at compile time. There is no way to add or remove tasks dynamically.
If this is all correct, than I still have a question: Is this really preemptive multi-tasking? Does Open AT stops the tasks at random positions and carries on execution on another task? Or is one task executed to the end and then the next task is executed? Is it possible to use an infinite loop in a task and multi-threading techniques like “thread locks” and “wait” calls to pass execution to another thread until it’s notified?
This is important because we’re porting a multi-threaded application from Java to C++. And without these feature mentioned above, it would be really hard to implement it.