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.