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.

Verklemmungsfreie Philosophen I<br />

void philosoph (int i)<br />

<br />

while (true) <br />

denke();<br />

nimmGabeln (i);<br />

esse();<br />

legeGabeln (i);<br />

<br />

<br />

6.3. Programmieren von nebenläufigen Abläufen<br />

void nimmGabeln (int i)<br />

<br />

down ( ausschluss );<br />

zustand[i] = hungrig;<br />

prüfe(i);<br />

up ( ausschluss );<br />

down ( phil[i] );<br />

(* Blockiere falls Gabeln nicht frei *)<br />

<br />

void legeGabeln (int i)<br />

<br />

down ( ausschluss );<br />

zustand[i] = denkend;<br />

prüfe( (i-1) % N ); (* aktiviere ggf. Nachbarn *)<br />

prüfe( (i+1) % N ); (* aktiviere ggf. Nachbarn *)<br />

up ( ausschluss );<br />

<br />

void prüfe (int i)<br />

<br />

if ( zustand[i] == hungrig &&<br />

zustand[i-1 % 5] != essend &&<br />

zustand[i+1 % 5] != essend )<br />

<br />

zustand[i] = essend;<br />

up ( phil[i] );<br />

(* aktiviert bei Blockade! *)<br />

<br />

<br />

Realisierung in Java<br />

¯ in Java: geschützte Objekte (entsprechen geschützten Bereichen)<br />

129

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!