User manual

Ist die Pause noch nicht vorüber, dann gibt der aktuelle Thread die Programmausführung
sofort an den nächsten Thread ab (vgl. yield).
5.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);
// ...
}
77
5 Programmiersprache C2