Next: Peterson Lösung
Up: Prozesssynchronisation
Previous: Kritische Bereiche
  Contents
Aktives Warten
Einen ersten Ansatz dieses Problem zu lösen bietet das aktive
Warten. Betrachten wir die zwei C-Programmstücke in Abbildung
.
Figure:
Aktives Warten
 |
In den beiden Programmstücken ist die Variable turn eine Variable auf
die beide Prozesse gleichermaßen zugreifen können. Dies lässt sich
beispielsweise durch das Thread-Konzept (vgl. Kapitel
)
realisieren. Wenn nun Prozess 1 in einen kritischen Bereich eintreten will, so wird
die Variable turn auf 0 geprüft. Ist sie ungleich 0 bleibt der Prozess
in der While-Schleife bis die Variable den Wert 0 annimmt. Die Variable
turn wird durch Prozess 2 auf 0 gesetzt, wenn er seinen kritischen
Bereich verlässt. Dann kann auch Prozess 1 in seinen kritischen Bereich
eintreten. Nun ist es aber Prozess 2 unmöglich wiederum in seinen kritischen
Bereich einzutreten, solange turn nicht auf 1 gesetzt wird. Der Ansatz des
aktiven Wartens ist eine Lösung des Problems, sollte aber nur dann verwendet
werden, wenn sicher ist, dass die Prozesse jeweils nicht allzulange warten
müssen, weil das aktive Warten Rechenzeit verbraucht. Außerdem wird verlangt,
dass Prozesse streng abwechselnd in ihre kritischen Bereiche eintreten, was in
der Regel auch nicht den gegebenen Problemen entspricht.
Next: Peterson Lösung
Up: Prozesssynchronisation
Previous: Kritische Bereiche
  Contents
Prof. Dr. Pluemicke
2003-05-10