Semaphoren
Lernziele
- Synchronisation mit Hilfe von Semaphoren
Aufgabe
oo-StuBS soll in dieser Aufgabe um Semaphore erweitert werden.
Mit Hilfe von Semaphoren besteht die Möglichkeit, Anwendungsprozesse
miteinander zu synchronisieren.
Darüberhinaus sollen sie dazu verwendet werden, Anwendungsprozesse bei
der Tastaturabfrage zu blockieren, bis eine Taste gedrückt wurde.
Hierzu müssen die Klassen Waitingroom
, Semaphore
,
Customer
, Organizer
, Guarded_Organizer
,
Guarded_Semaphore
und Guarded_Keyboard
implementiert,
die Klasse Keyboard
erweitert und die Klasse Thread
angepasst werden.
Die Klasse Guarded_Scheduler
wird nicht länger benötigt,
da Guarded_Organizer
ihre Aufgabe übernimmt.
Ebenso soll das globale Guarded_Scheduler
Objekt
scheduler
durch ein globales Guarded_Organizer
Objekt organizer
ersetzt werden.
Mit Hilfe von Semaphorvariablen solltet ihr nun verhindern können, dass sich eure Anwendungsprozesse bei der Bildschirmausgabe gegenseitig behindern. Erweitert euer Programm nun auch dahingehend, dass einer der Prozesse Tastaturabfragen vornimmt (und in irgendeiner sichtbaren Weise darauf reagiert).
Vorgabe
Zu dieser Aufgaben geben wir ausnahmsweise einmal nichts vor. Die zu implementierenden Klassen sowie die Signaturen der Methoden könnt ihr aus dem UML-Diagramm sowie der dahinterliegenden Klassenbeschreibung entnehmen.