Übungen zu BS - Aufgaben (WS 2013/14)


Öffentliche Methoden | |
Thread (void *tos) | |
Konstruktor. | |
void | go () |
Aktiviert den ersten Thread auf einem Prozessor. | |
void | resume (Thread *next) |
Wechsel von dem aktuell laufenden Thread zum nächsten. | |
virtual void | action ()=0 |
Methode, die als Thread ausgeführt werden soll. | |
void | set_kill_flag () |
Setzen des Kill-Flags. Thread wechselt in den Zustand sterbend. Wird nur für MPStuBS benötigt. | |
void | reset_kill_flag () |
Zurücksetzen des Kill-Flags. Thread ist damit gestorben. Wird nur für MPStuBS benötigt. | |
bool | dying () |
Abfragen des Kill-Flags. Nachschauen, ob der Thread gerade stirbt. Wird nur für MPStuBS benötigt. | |
Waitingroom * | waiting_in () |
Hiermit kann abgefragt werden, in welchem Waitingroom Objekt der Thread eingetragen ist. | |
void | waiting_in (Waitingroom *w) |
Mit dieser Methode wird im Thread vermerkt, dass dieser derzeit im Waitingroom w auf ein Ereignis wartet. |
Öffentliche Attribute | |
Waitingroom * | waitingroom |
![]() | |
Thread * | next |
next gibt das nächste Element der Liste an. |
Beschreibung der Konstruktoren und Destruktoren
Thread::Thread | ( | 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 diesen Thread fungieren soll.
Dokumentation der Elementfunktionen
|
pure virtual |
Methode, die als Thread ausgeführt werden soll.
Abgeleitete Klassen können durch Überschreiben dieser Methode den Code angeben, der als Thread ausgeführt werden soll.
Implementiert in Buzzing_Loop, Keyboard_Loop, Loop, Application, IdleThread und Santas_House.
void Thread::go | ( | ) |
Aktiviert den ersten Thread auf einem Prozessor.
Durch den Aufruf von Thread::go() wird der erste Thread auf dem jeweiligen Prozessor gestartet. Alle weiteren Threadwechsel sollen dann mit Hilfe der Methode Thread::resume() ausgeführt werden.
void Thread::resume | ( | Thread * | next | ) |
Waitingroom * Thread::waiting_in | ( | ) |
Hiermit kann abgefragt werden, in welchem Waitingroom Objekt der Thread eingetragen ist.
Ein Rückgabewert von 0 soll bedeuten, dass der Thread auf überhaupt kein Ereignis wartet, also entweder der aktuell laufende Thread ist, auf der Ready-Liste des Schedulers steht, bereits terminiert ist oder noch gar nicht beim Scheduler angemeldet wurde.
- Rückgabe
- Zeiger auf das Waitingroom, in dem dieser Thread wartet, oder 0.
void Thread::waiting_in | ( | Waitingroom * | w | ) |
Mit dieser Methode wird im Thread vermerkt, dass dieser derzeit im Waitingroom w auf ein Ereignis wartet.
- Parameter
-
w Waitingroom, in dem dieser Thread wartet.
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
- thread/thread.h
- thread/thread.cc