Herunterladen Inhalt Inhalt Diese Seite drucken

Conrad Electronic C-Control II Station Handbuch Seite 78

Inhaltsverzeichnis

Werbung

C-Control II Station
Das Setzen des "Freisignals" erfolgt durch das Schlüsselwort. Da sich ein Thread merkt,
welche byte-Variable er besetzt hat, steht die release Anweisung ohne weitere
Angaben.
release;
Ein Thread sollte release sofort aufrufen, wenn er den synchronisierten Bereich verläßt.
Andere, vor capture wartende Threads werden sonst unnötig blockiert.
Ein Thread darf niemals zwei capture-Anweisungen ohne zwischenzeitliches relea-
se ausführen.
Der C2-Compiler kann das nicht nachprüfen. Bei Mißachtung kommt es zu Blockaden im
Programm.
z.B.
byte flag1;
byte flag2;
thread tx
{
capture flag1; // Blockade im 2. Durchlauf
capture flag2; // flag1 wird "vergessen"
//...
release;
}
Der Thread tx im obigen Beispiel läuft wie jeder Thread automatisch in einer
Endlosschleife. Im zweiten Schleifendurchlauf blockiert er, da flag1 noch auf "Besetzt"
steht.
Abschließend je ein Beispiel zur Anwendung der expliziten und der impliziten capture
Form:
1.) Vermeidung von Aliasing bei Speicherzugriffen durch explizites capture
78
// nur flag2 wird freigegeben

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis