Implementierung des Schedulers. Mehr ...
#include <scheduler.h>


Öffentliche Methoden | |
Scheduler () | |
Konstruktor. Mehr ... | |
void | schedule () |
Starten des Schedulings. Mehr ... | |
void | ready (Thread *that) |
Anmelden eines Threads zum Scheduling. Mehr ... | |
void | exit () |
Selbstbeenden des aktuellen Threads. Mehr ... | |
void | kill (Thread *that) |
Beenden eines beliebigen Threads. Mehr ... | |
void | resume () |
Auslösen eines Threadwechsels. Mehr ... | |
![]() | |
Dispatcher () | |
Konstruktor. Mehr ... | |
Thread * | active () |
Hiermit kann abgefragt werden, welche Koroutine gerade im Besitz des aktuellen Prozessors ist. Mehr ... | |
void | go (Thread *first) |
Mit dieser Methode wird die Koroutine first im Life-Pointer des aktuellen Prozessores vermerkt und gestartet. Mehr ... | |
void | dispatch (Thread *next) |
Diese Methode setzt den Life-Pointer des aktuellen Prozessors auf next und führt einen Koroutinenwechsel vom alten zum neuen Life-Pointer durch. Mehr ... | |
Weitere Geerbte Elemente | |
![]() | |
static void | kickoff (Thread *object) |
Funktion zum Starten eines Threads. Mehr ... | |
![]() | |
void | setActive (Thread *c) |
![]() | |
Thread * | life [CPU_MAX] |
Ausführliche Beschreibung
Implementierung des Schedulers.
Der Scheduler verwaltet die Ready-Liste (ein privates Queue Objekt der Klasse), also die Liste der lauffähigen Threads. Die Liste wird von vorne nach hinten abgearbeitet. Dabei werden Threads, die neu im System sind oder den Prozessor abgeben, stets an das Ende der Liste angefügt.
Beschreibung der Konstruktoren und Destruktoren
|
inline |
Konstruktor.
Dokumentation der Elementfunktionen
void Scheduler::exit | ( | ) |
void Scheduler::kill | ( | Thread * | that | ) |
Beenden eines beliebigen Threads.
Mit dieser Methode kann ein Thread einen anderen (that) beenden. In OOStuBS genügt es einfach den Thread that von der Ready-Liste zu entfernen. Er wird somit nie wieder vom Prozessor ausgeführt werden. In MPStuBS ist die Implementierung etwas kniffliger, da der Thread that auch während der Ausführung von kill auf anderen Prozessoren laufen kann. Wird that nicht in der Ready-Liste gefunden, so muss bei ihm vermerkt werden, dass der Thread beendet werden soll. Dies muss in resume überprüft werden, bevor ein Thread wieder in die Ready-Liste eingetragen wird.
- Parameter
-
that Thread, der beendet werden soll.
void Scheduler::ready | ( | Thread * | that | ) |
void Scheduler::resume | ( | ) |
Auslösen eines Threadwechsels.
Hiermit kann ein Threadwechsel ausgelöst werden, ohne dass der aufrufende Thread wissen muss, welche anderen Thread Objekte im System existieren und welcher davon sinnvollerweise aktiviert werden sollte. Diese Entscheidung trifft der Scheduler anhand der Einträge seiner Ready-Liste. Der Scheduler soll den gerade laufenden Thread an das Ende der Ready-Liste anfügen und den ersten Thread in der Ready-Liste aktivieren.
void Scheduler::schedule | ( | ) |
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
- thread/scheduler.h
- thread/scheduler.cc