Herunterladen Inhalt Inhalt Diese Seite drucken

Conrad Electronic C-Control II Station Handbuch Seite 77

Inhaltsverzeichnis

Werbung

8. Die Programmiersprache C2
zweiter Thread, der ebenfalls auf dieses Freizeichen wartet, erhält nun Rechenzeit. Das
Signal steht noch auf "frei" , obwohl schon ein anderer Thread den kritischen Bereich
betreten hat!
Zur Lösung des Synchronisationsproblems stellt die virtuelle Maschine der C-Control II eine
atomare Maschinenoperation zur Verfügung, auf die in C2 über das Schlüsselwort
capture zugegriffen werden kann.
Die capture-Anweisung existiert in einer expliziten und einer impliziten Form. Die
explizite Form erwartet die Angabe eines Bezeichners einer globalen (!) byte-Variable.
z.B.:
byte flag;
thread tx
{
capture flag; // explicit: capture the flag
//...
}
Beim Ausführen der capture Anweisung testet der aktuelle Thread, ob der Wert der
Variablen 0 ist (="Freizeichen"). Wenn ja, dann schreibt der Thread seine eigene Nummer
(Wert 1...255) in die Variable und merkt sich die Adresse der byte-Variable. Wie bereits
erwähnt, dieser Vorgang läuft atomar, in einer einzigen Operation der virtuellen Maschine
ab.
Die implizite Form lautet
capture;
ohne weitere Angaben. Die implizite Form kann nur innerhalb der Anweisungsblöcke von
Funktionen verwendet werden, nicht in denen von Threads. Die implizite Form nutzt
versteckte globale byte-Variablen, die der C2-Compiler automatisch anlegt. Zu jeder
Funktion exisitiert eine solche Variable.
77

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis