Can anyone provide a concrete definition of the relationship between the OpenAT tasks and execution contexts, and underlying threads of execution? I have been trying to determine exactly how the operating system performs threading, in particular with respect to application code and multiple tasks.
I would like to know, for instance, if each task defined in the application runs in a separate thread, or if all tasks are run in a single thread. It appears that the latter is the case, but it is really difficult to tell experimentally.
If it is the case that each task is essentially a thread, how do I as the application developer control synchronization? Do I need to implement my own locking structure? The Semaphore service provided by OpenAT only works across execution contexts, and is therefore really limited (since it will not work for inter-task control). In particular, I would very much like to implement a wait-notify style coordination system similar to those in boost and Java for driving events through a system.