OOStuBS/MPStuBS
Thread Klassenreferenzabstract

Der Thread ist das Objekt der Ablaufplanung. Mehr ...

#include <thread.h>

Klassendiagramm für Thread:
Zusammengehörigkeiten von Thread:

Öffentliche Methoden

 Thread (void *tos)
 Konstruktor. Mehr ...
 
void go ()
 Aktiviert den ersten Thread auf einem Prozessor. Mehr ...
 
void resume (Thread *next)
 Wechsel von dem aktuell laufenden Thread zum nächsten. Mehr ...
 
virtual void action ()=0
 Methode, die als Thread ausgeführt werden soll. Mehr ...
 
void set_kill_flag ()
 Setzen des Kill-Flags. Thread wechselt in den Zustand sterbend. Wird nur für MPStuBS benötigt. Mehr ...
 
void reset_kill_flag ()
 Zurücksetzen des Kill-Flags. Thread ist damit gestorben. Wird nur für MPStuBS benötigt. Mehr ...
 
bool dying ()
 Abfragen des Kill-Flags. Nachschauen, ob der Thread gerade stirbt. Wird nur für MPStuBS benötigt. Mehr ...
 
Waitingroomwaiting_in ()
 Hiermit kann abgefragt werden, in welchem Waitingroom Objekt der Thread eingetragen ist. Mehr ...
 
void waiting_in (Waitingroom *w)
 Mit dieser Methode wird im Thread vermerkt, dass dieser derzeit im Waitingroom w auf ein Ereignis wartet. Mehr ...
 

Öffentliche Attribute

QueueLink< Threadqueue_link
 Verkettungszeiger für Scheduler und Waitingroom.
 

Ausführliche Beschreibung

Der Thread ist das Objekt der Ablaufplanung.

Beschreibung der Konstruktoren und Destruktoren

◆ Thread()

Thread::Thread ( void *  tos)

Konstruktor.

Initialisiert den Kontext mit Hilfe von toc_settle

Parameter
tosTop of Stack, also die höchste Adresse des Speicherbereiches, der als Stack für diesen Thread fungieren soll.

Dokumentation der Elementfunktionen

◆ action()

virtual void Thread::action ( )
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 Application, KeyboardApplication, IdleThread und FPS.

◆ dying()

bool Thread::dying ( )
inline

Abfragen des Kill-Flags. Nachschauen, ob der Thread gerade stirbt. Wird nur für MPStuBS benötigt.

◆ go()

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.

◆ reset_kill_flag()

void Thread::reset_kill_flag ( )
inline

Zurücksetzen des Kill-Flags. Thread ist damit gestorben. Wird nur für MPStuBS benötigt.

◆ resume()

void Thread::resume ( Thread next)

Wechsel von dem aktuell laufenden Thread zum 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 des nächsten Threads) ersetzt.

Parameter
nextZeiger auf den nächsten Thread, der laufen soll.

◆ set_kill_flag()

void Thread::set_kill_flag ( )
inline

Setzen des Kill-Flags. Thread wechselt in den Zustand sterbend. Wird nur für MPStuBS benötigt.

◆ waiting_in() [1/2]

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.

◆ waiting_in() [2/2]

void Thread::waiting_in ( Waitingroom w)

Mit dieser Methode wird im Thread vermerkt, dass dieser derzeit im Waitingroom w auf ein Ereignis wartet.

Parameter
wWaitingroom, in dem dieser Thread wartet.

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: