Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Synchronisierung Kategorie: Programmierung (von Christian Jost - 26.10.2005 10:37)
Ich nutze:
C-Control II Station, OSOPT V3.0
Hallo,

Ich hätte ein paar Fragen zur Synchronisierung:

1)
Ich habe 4 Worker-Threads. Sobald einer fertig ist, soll dieser ein globales Flag setzen:

int ready;
...
ready = TRUE;

Ein anderer Thread fĂĽhrt folgendes aus:

loop
{
  wait ready;
  ready = FALSE;
  ...
}

Kann die virtuelle Maschine durcheinander geraten (=Absturz), wenn zwei Threads "gleichzeitig"
versuchen auf dieselbe Variable zuzugreifen? Es spielt keine rolle ob das Flag mehrmals gesetzt
wird oder von wem es gesetzt wird. Es ist einfach wichtig dass es gesetzt wird.
Ich möchte für diesen Fall kein capture/release benutzen um die Programmausführung nicht durch
Wartezustände zu verlangsamen.


2)
wenn ich durch run 255 die Priorität erhöhe, so wirkt sich das sofort aus oder erst
nach dem nächsten Thread-Wechsel?
Ich denke da an folgende Anwendung fĂĽr einen Ringbuffer:

run 255;
capture sema;
bufCount = (bufCount + 1);
release;
resume;

Ziel ist auch hier wieder möglichst wenig zu blockieren.


3)
In diesem Eintrag: 11080
hat André H. geschrieben, dass andere Threads immer lesend auf Variablen zugreifen dürfen
(ohne capture) wenn sie nur von einem Thread verändert werden.
Gilt das auch fĂĽr long, float und string oder nur fĂĽr byte/int?


Besten Dank fĂĽr eure Hilfe.

Gruss,
Chris



    Antwort schreiben


Antworten:

Re: Synchronisierung (von André H. - 30.10.2005 18:00)
Re: Synchronisierung (von KlaRa - 26.10.2005 13:37)
    Re: Synchronisierung (von Christian Jost - 28.10.2005 20:01)