Coroutine Klassenreferenz
Die Klasse
Coroutine stellt die Abstraktion einer Koroutine dar.
Mehr ...
#include <coroutine.h>
Aufstellung aller Elemente
|
Öffentliche Methoden |
| Coroutine (void *tos) |
| Konstruktor;.
|
void | go () |
| Aktiviert die erste Koroutine auf einem Prozessor.
|
void | resume (Coroutine &next) |
| Wechsel von der aktuell laufenden Koroutine zur nächsten.
|
virtual void | action ()=0 |
| Methode, die als Koroutine ausgeführt werden soll.
|
void | set_kill_flag () |
| Setzen des Kill-Flags. Prozess wechselt in den Zustand sterbend. Wird nur für MPStuBS benötigt.
|
void | reset_kill_flag () |
| Zurücksetzen des Kill-Flags. Prozess ist damit gestorben. Wird nur für MPStuBS benötigt.
|
bool | dying () |
| Abfragen des Kill-Flags. Nachschauen, ob der Prozess gerade stirbt. Wird nur für MPStuBS benötigt.
|
Ausführliche Beschreibung
Die Klasse
Coroutine stellt die Abstraktion einer Koroutine dar.
Sie ermöglicht die Prozessorabgabe an eine andere Koroutine und stellt durch die Struktur toc Speicherplatz zur Verfügung, um die Inhalte der nicht-flüchtigen Register bis zur nächsten Aktivierung zu sichern. Außerdem sorgt sie für die Initialisierung dieser Registerwerte, damit bei der ersten Aktivierung die Ausführung an der richtigen Stelle und mit dem richtigen Stack beginnt.
Beschreibung der Konstruktoren und Destruktoren
Coroutine::Coroutine |
( |
void * |
tos |
) |
|
Konstruktor;.
Initialisiert den Kontext mit Hilfe von toc_settle
- Parameter:
-
| tos | Top of Stack, also die höchste Adresse des Speicherbereiches, der als Stack für diese Koroutine fungieren soll. |
Dokumentation der Elementfunktionen
Aktiviert die erste Koroutine auf einem Prozessor.
Durch den Aufruf von Coroutine::go() wird die erste Koroutine auf dem jeweiligen Prozessor gestartet. Alle weiteren Koroutinenwechsel sollen dann mit Hilfe der Methode Coroutine::resume() ausgeführt werden.
Wechsel von der aktuell laufenden Koroutine zur nächsten.
Die aktuelle Belegung der nicht-flüchtigen Register wird in dem toc Element gesichert und durch die Werte von next (dem toc Element der nächsten Koroutine) ersetzt.
- Parameter:
-
| next | Zeiger auf die nächste Koroutine, die laufen soll. |
virtual void Coroutine::action |
( |
|
) |
[pure virtual] |
Methode, die als Koroutine ausgeführt werden soll.
Abgeleitete Klassen können durch Überschreiben dieser Methode den Code angeben, der als Koroutine ausgeführt werden soll.
Implementiert in Application und Loop.
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: