8. Die Programmiersprache C2
Thread die Programmausführung sofort an den nächsten Thread ab (vgl.yield ).
8.9.6 Synchronisation
In Computersystemen mit parallelen Prozessen kann es zu folgenden problematischen
Situationen kommen:
• Aliasing von Speicherzugriffen
• Konkurrenz mehrerer Prozesse um eine Ressource
Konkurrenz um eine Ressource entsteht beispielsweise, wenn zwei Threads gleichzeitig
Daten über dieselbe serielle Schnittstelle senden wollen. Die serielle Schnittstelle kann aber
nur einen Ausgabepuffer zu einer Zeit bedienen. Folglich kann nur ein Thread gleichzeitig
senden. Der zweite Thread muß warten, bis die Ressource frei ist. Zur Erläuterung des
Aliasing-Problems folgendes Beispiel:
Ein Thread fragt zyklisch zwei Meßkanäle ab und speichert diese in zwei globalen
Variablen. Ein paralleler Thread liest diese globalen Variablen und soll jeweils beide
Werte aus einem Meßzyklus einer Prüffunktion zuführen.
float a, b; // Messwerte
thread measure
{
a = get_channel_a();
b = get_channel_b();
//...
}
thread watch
{
check(a, b);
// ...
}
Wie in 8.9.3 bereits gezeigt, wird eine C2-Anweisung in mehreren Einzeloperationen der
virtuellen Maschine ausgeführt. Die Anweisung
75