The initial stack size is determined by the size of the activation record of the calling procedure and a default value taken from Coroutines.defaultsize . Note that the current storage management system allows coroutine stacks to grow dynamically. The coroutine structure is allocated at the beginning of the new stack and initialized. Immediate return to the calling procedure. Thus, the coroutine procedure must not be a function.
Tasks introduces the notion of tasks, task groups and schedulers.
Each task group is controlled by a scheduler which is member of another task group. Task groups and schedulers form a tree with the main task as root. Instead, they may tell what they are waiting for by the use of conditions, an abstraction offered by Conditions . Specific condition types are exported by StreamConditions , TimeConditions , EventConditions , Semaphores and other modules. Usually, schedulers follow the standard scheduler interface of Schedulers which allows to add tasks dynamically.