..
Suche
Hinweise zum Einsatz der Google Suche

Das Erzeuger/Verbraucher-Problem (Falsche Lösung!)

Hinweise zur Benutzung der Demo
Die dargestellte Lösung des Erzeuger-/Verbaucher-Problems ist falsch! Versuchen Sie einen Ablauf zu finden, in dem eine Verklemmung auftritt!
  • Hinweis: Falls Sie oben kein Java-Applet sehen, unterstützt Ihr Browser keine Java-Applets mehr. In diesem Fall gehen Sie bitte wie folgt vor:
    • Laden Sie sich die Zip-Datei mit den Demos herunter.
    • Entpacken Sie die Datei.
    • Nun können Sie das Applet mit dem Kommando appletviewer <html-Datei> ausführen.
  • Im linken Teil sind dargestellt:
    • Die verwendeten Semaphore mit dem aktuellen Wert des Semaphor-Zählers. Die Farben bedeuten:
      • grün: Semaphor ist frei (Zähler > 0)
      • gelb: Semaphor ist belegt, kein wartender Thread (Zähler = 0)
      • rot: Semaphor ist belegt, Threads warten (Zähler < 0)
    • Der Puffer mit 5 Pufferplätzen. Ein blauer Hintergrund zeigt an, daß der jeweilige Pufferplatz belegt ist.
    • Ein Feld zum globalen Einzelschrittbetrieb. Bei jedem Drücken des 'Einzelschritt'-Knopfes führt ein rechenbereiter Thread die nächste Codezeile aus.
      Über die Combo-Box 'Strategie' kann die Auswahlstrategie festgelegt werden:
      • Random: zufällig
      • RR, Round Robin: die Threads werden reihum ausgewählt; ein Thread, der einen Schritt ausgeführt hat und rechenbereit ist, stellt sich hinten wieder an.
      • FIFO: ein Thread wird solange ausgeführt, bis er blockiert. Erst dann kommt der nächste Thread.
      • Prio: die Threads erhalten eine Priorität, die von links oben nach rechts unten abnimmt. Es wird immer der rechenbereite Thread mit der höchsten Priorität ausgeführt.
      • rev. Prio: die Threads erhalten eine Priorität, die von links oben nach rechts unten zunimmt. Es wird immer der rechenbereite Thread mit der höchsten Priorität ausgeführt.
  • Im rechten Teil sind die beteiligten Threads (bzw. Prozesse) mit ihrem Quellcode dargestellt.
    • Die blaugrüne Markierung zeigt die nächste auszuführende Codezeile an.
    • Eine rote Markierung bedeutet, daß der Thread in dieser Zeile blockiert ist.
    Wenn der 'Einzelschritt'-Knopf gedrückt wird, führt der Thread die nächste Codezeile aus.
  • Zum Zurücksetzen der Demo drücken Sie den 'Reload'-Knopf Ihres Browsers.
 
Suche