Ein Organizer ist ein spezieller Scheduler, der zusätzlich das Warten von Prozessen (Customer) auf Ereignisse erlaubt.
Mehr ...
#include <organizer.h>
Öffentliche Methoden |
void | block (Customer &customer, Waitingroom &waitingroom) |
| Mit dieser Methode kann sich der laufende Prozess selbst blockieren.
|
void | wakeup (Customer &customer) |
| Mit dieser Methode kann ein schlafender Prozess geweckt werden.
|
void | kill (Customer &customer) |
| Mit dieser Methode kann ein Prozess einen anderen beenden.
|
| Scheduler () |
| Konstruktor.
|
void | schedule () |
| Starten des Schedulings.
|
void | ready (Entrant &that) |
| Anmelden eines Prozesses zum Scheduling.
|
void | exit () |
| Selbstbeenden des aktuellen Prozesses.
|
void | kill (Entrant &that) |
| Beenden eines beliebigen Prozesses.
|
void | resume () |
| Auslösen eines Prozesswechsels.
|
void | set_idle_thread (int cpuid, Entrant *thread) |
| Setzt einen dedizierten Idle-Thread für die entsprechende CPU.
|
void | sleep_until_IRQ () |
| Legt den aktuellen Prozessor schlafen, solange keine Prozesse vorhanden sind.
|
| Dispatcher () |
| Konstruktor.
|
Coroutine * | active () |
| Hiermit kann abgefragt werden, welche Koroutine gerade im Besitz des aktuellen Prozessors ist.
|
void | go (Coroutine &first) |
| Mit dieser Methode wird die Koroutine first im Life-Pointer des aktuellen Prozessores vermerkt und gestartet.
|
void | dispatch (Coroutine &next) |
| Diese Methode setzt den Life-Pointer des aktuellen Prozessors auf next und führt einen Koroutinenwechsel vom alten zum neuen Life-Pointer durch.
|
Ausführliche Beschreibung
Ein Organizer ist ein spezieller Scheduler, der zusätzlich das Warten von Prozessen (Customer) auf Ereignisse erlaubt.
Dokumentation der Elementfunktionen
Mit dieser Methode kann sich der laufende Prozess selbst blockieren.
Er gibt also den Prozessor an den nächsten lauffähigen Prozess ab. Außerdem vermerkt er, auf welches Ereignis (in welchem Wartezimmer) er nun wartet.
- Parameter
-
customer | Prozess, der sich selbst blockieren möchte. |
waitingroom | Wartezimmer, in welchem der Prozess warten möchte. |
void Organizer::kill |
( |
Customer & |
customer | ) |
|
Mit dieser Methode kann ein Prozess einen anderen beenden.
Steht der Prozess customer auf der Ready-Liste, dann kann Scheduler::kill() verwendet werden. Wartet er dagegen auf ein Ereignis, so muss er von dessen Liste (also aus dem Wartezimmer) heruntergenommen werden.
- Parameter
-
customer | Prozess, der beendet werden soll. |
void Organizer::wakeup |
( |
Customer & |
customer | ) |
|
Mit dieser Methode kann ein schlafender Prozess geweckt werden.
Das heißt, dass er wieder auf die Ready-Liste gesetzt wird. Dabei sollte auch markiert werden, dass der Prozess nun auf kein Ereignis mehr wartet.
- Parameter
-
customer | Schlafender Prozess, der geweckt werden soll. |
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: