Skip to main content.

Navigation:

Semaphoren

Lernziele

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.