Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Lösungsvorschlag   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
pruefungen:bachelor:pfp:loesungss12 [24.07.2015 12:33] ThiloKpruefungen:bachelor:pfp:loesungss12 [03.08.2019 18:37] (aktuell) mrpwner
Zeile 24: Zeile 24:
  
    M:     M: 
-    0         1+    0         0
     2    -1  -1   0     2    -1  -1   0
     0    -1     0     0    -1     0
    -1  -1       2    -1  -1       2
     0        -4     0        -4
 +    
  
 Petri-Netz ist nicht lebendig, da durch t0 -> t3 -> t3 ein Deadlock entsteht! Petri-Netz ist nicht lebendig, da durch t0 -> t3 -> t3 ein Deadlock entsteht!
Zeile 45: Zeile 46:
 public class PointerDoubling { public class PointerDoubling {
  private static int[] next ;  private static int[] next ;
- private static int [] rank;+ private static int[] rank;
  private static CyclicBarrier outer;  private static CyclicBarrier outer;
  private static CyclicBarrier inner;  private static CyclicBarrier inner;
Zeile 77: Zeile 78:
  }  }
  // TODO: 4  // TODO: 4
- inner.await();+ // inner.await(); -- not needed // EDIT: Wieso nicht? Die Threads nutzen eine gemeinsame Datenstruktur, und wenn einer etwas daran ändert, muss eine Sichtbarkeitssynchronisation vorgenommen werden, die mit einer Barrier möglich ist. Sonst würden andere Threads bereits den unteren Code ausfuehren, ohne die Garantie, dass für irgendeinen das Ende (-1) sichtbar ist. Lasse mich gerne korrigieren, falls ich falsch liege.
  int distance = 1 ;  int distance = 1 ;
  while (distance < next.length) {  while (distance < next.length) {
Zeile 87: Zeile 88:
  }  }
  // TODO: 4  // TODO: 4
- inner.await();+ // inner.await(); -- not needed
  // TODO: 3  // TODO: 3
  if (rankOfNext != 0) {  if (rankOfNext != 0) {
Zeile 107: Zeile 108:
 } // END OF PointerDoubling } // END OF PointerDoubling
 </code> </code>
 +
 +<note>Vermutlich reicht das inner.await() am Ende der While-Schleife. Als ich weiter oben ein <code>if (index == 0) { Thread.sleep(1000); }</code> stehen hatte, lieferte der Code immer noch das richtige Ergebnis. Bin mir da aber nicht hundert Pro sicher  :-P</note>
  
 ==== Aufgabe 6 (Sichtbarkeit und Wettlaufsituation) ==== ==== Aufgabe 6 (Sichtbarkeit und Wettlaufsituation) ====