11.10.2013 Aufrufe

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

6. Verteilte Berechnungen<br />

¯ Lösung: Schützen des Besteckkasten durch synchronized-Anweisung<br />

Diese implementiert quasi einen Monitor analog einer Semaphore.<br />

¯ kritischer Bereich<br />

alle Zugriffe synchronisiert mittels Semaphore mit Initialwert 1<br />

Der Besteckkasten<br />

¯ Verwaltung der 5 Gabeln<br />

¯ Operationen zum Aufnehmen, Ablegen <strong>und</strong> Testen<br />

class Canteen <br />

// 5 Gabeln: true - frei, false - belegt<br />

boolean forks[] = <br />

true, true, true, true, true<br />

;<br />

<br />

// Testet, ob Gabel verfügbar ist.<br />

boolean isAvailable (int f) <br />

return forks[f];<br />

<br />

// Aufnehmen der Gabel.<br />

void takeFork (int f) <br />

forks[f] = false;<br />

<br />

// Ablegen der Gabel.<br />

void putFork (int f) <br />

forks[f] = true;<br />

<br />

Ein Philosoph<br />

class Philosopher extends Thread <br />

// Konstanten für die möglichen Zustände<br />

public final static int THINKING = 1;<br />

public final static int HUNGRY = 2;<br />

public final static int EATING = 3;<br />

130<br />

Canteen canteen; // der Besteckkasten<br />

int leftFork, rightFork;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!