Programmierpraktikum 2

Übung #8

WS 98/99

 

Übung 8: Semaphor

Übung 8 [24]: Semaphor

Schreiben Sie eine Klasse Semaphor mit folgendem Interface (Verhalten wie in der Vorlesung Betriebssysteme I beschrieben):

public class Semaphor
{
	public Semaphor(long init);
	public void SemInit(long init);	// Initialisierung
	public void SemWait() throws InterruptedException;
	public void SemSignal();
	public long SemValue();	// Derzeitiger Stand
}

Wo notwendig, fügen Sie "synchronized" ein.

Zum Test schreiben Sie das im BS I-Skriptum beschriebene Programm eine Ringbuffers, für das 3 Semaphore benötigt werden. Ein Thread erzeugt Werte und ein anderer liest diese wieder aus (Übergeben Sie dem Konstuktor einen boolschen Wert, der entscheidet welchen Part dieser Thread übernimmt). Stellen Sie durch geeignete sleep()-Anweisungen sicher, das sowohl der Producer-Thread wie auch der Consumer-Thread einmal schneller als der andere arbeiten.