Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#14

AW: Multithreading und Globale Funktionen

  Alt 14. Feb 2011, 14:16
Jetzt habe ich noch eine Frage zu dem Thema, aber mit einer anderen Funktion:

Delphi-Quellcode:
function GetString(Data : TBytes):String;
var
  i : Integer;
begin
  Result := '';
  for i := 0 to High(Data) do
    Result := Result + IntToHex(Data[i], 2);
end;
Kann man sowas für Multithread verwenden? Oder wird da das Result zurückgesetzt wenn gerade ein Thread in der For Schleife ist und ein anderer die GetString ausführt?

Oder muss es dann so gemacht werden:
Delphi-Quellcode:
function GetString(Data : TBytes):String;
var
  i : Integer;
begin
  EnterCriticalSection(CS);
  try
    Result := '';
    for i := 0 to High(Data) do
      Result := Result + IntToHex(Data[i], 2);
  finally
    LeaveCriticalSection(CS);
  end;
end;
Ich will sozusagen einen Logger machen. Wenn ich nun CriticalSection verwende ist der eine Thread solange blockiert bis der andere Thread durch ist. Dies führt zu einer nicht gewollten Verzögerung wenn es jetzt um viele Daten geht.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat