Herunterladen Inhalt Inhalt Diese Seite drucken

Conrad C-Control II Unit Handbuch Seite 80

Kompakter steuerungscomputer
Inhaltsverzeichnis

Werbung

C-Control II Unit
Das Setzen des "Freisignals" erfolgt durch das Schlüsselwort release. Da sich ein Thread
merkt, welche byte-Variable er besetzt hat, steht die release-Anweisung ohne weite-
re 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 release
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;
capture flag2;
//...
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
80
// Blockade im 2. Durchlauf
// flag1 wird "vergessen"
// nur flag2 wird freigegeben

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis