Class Coroutine
Placement in the overall structure
- Module
- thread
- Base classes
- None
- Derived classes
- Entrant
- Time of creation
- Task 4
- Files
coroutine.h coroutine.cc
Description
The Coroutine class represents the abstraction of a coroutine. It enables processor release to another coroutine and provides memory (through the toc struct) to save the contents of the non-volatile registers until the next activation. In addition, it takes care of the initialization of these register values so that execution starts at the right place and with the right stack when they are first activated.Public methods
Coroutine (void* tos);- In the coroutine constructor, the register values are initialized so that the stack pointer initially points to tos and on first activation execution begins with the kickoff function.
void go ();- This method is used for the first activation of the first coroutine in the system. Therefore no register values must be saved here.
void resume (Coroutine& next);- This method triggers a coroutine switch. The current contents of the non-volatile registers are saved in the toc element and replaced by the values of next (the toc element of the next coroutine).
virtual void action () = 0;- The method action represents the actual job of the coroutine. However, since not all coroutines in the system should do the same, action can only be defined in a specialized class (e.g. in Application).