Einzelnen Beitrag anzeigen

Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Thread Synchronisation

  Alt 22. Aug 2010, 21:04
Hallo Andreas,

ich habe es so verstanden, dass die Interlocked-Funktionen dafür sorgen, dass die Kommandos zum Bearbeiten einer Integer o. ä. innerhalb einer Zeitscheibe erledigt sind.

Bleibt immer noch die Frage in Verbindung mit Criticalsections:

Muss ein lesender Zugriff in einem Thread auf eine Variable, die von anderen Threads geschrieben wird mit einer Criticalsection umgeben werden?

Folgender Fall für einen Hauptthread, der auf Ergebnisse aus den Subthreads wartet (Beispiel):

Delphi-Quellcode:
      bRunning := True;
      while bRunning do
      begin
        i := 0;
        while (i < Formulas.Count) do
        begin
          // FThreadResult sei eine Extended-Variable
          // Muss hier eine Criticalsection rein?
          if Formulas[i].FThreadResult > 0 then
          begin
            bRunning := False; // Schleife verlassen, Ergebnis ist da.
          end;
          inc(i);
        end;
      end;
Meiner Meinung nach ist es hier nicht nötig eine Criticalsection einzufügen, da die Schleife ja weiter durchlaufen wird, wenn ein Thread gerade die Ergebnisvariable beschreibt und somit der richtige Wert einen Durchlauf später vorhanden ist.

Oder liege ich da falsch und der lesende Zugriff könnte den schreibenden Thread blockieren?


Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat