Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#3

AW: Memory-Leaks in TEncoding

  Alt 22. Jun 2018, 09:06
Das was man dort sieht ist die übliche Vorgehensweise für die thread-safe und lock-free Erstellung einer (hier globalen) Instanz.

Mit TInterlocked könnte man das noch etwas übersichtlicher gestalten:
Delphi-Quellcode:
class function TEncoding.GetUnicode: TEncoding;
var
  LEncoding: TEncoding;
begin
  if FUnicodeEncoding = nil then
  begin
    LEncoding := TUnicodeEncoding.Create;
    try
      LEncoding := TInterlocked.CompareExchange<TEncoding>(FUnicodeEncoding, LEncoding, nil);
    finally
      LEncoding.Free;
    end;
  end;
  Result := FUnicodeEncoding;
end;
  Mit Zitat antworten Zitat