Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.238 Beiträge
 
Delphi 12 Athens
 
#7

AW: CriticalSection und Threads

  Alt 26. Nov 2011, 11:25
Delphi-Quellcode:
function TMyThreadA.CS: TCriticalSection;
var
  Comp: TCriticalSection;
begin
  Result := _CS;
  if not Assigned(Result) then begin
    Result := TCriticalSection.Create;
    Comp := InterlockedCompareExchangePointer(Pointer(_CS), Pointer(Result), nil);
    if Assigned(Comp) then begin
      Result.Free;
      Result := Comp;
    end;
  end;
end;
Braucht keine zusätzliche CS.

Nur im Destructor, vor dem Freigeben der CS, diese dort besser nochmal mal sperren.
Delphi-Quellcode:
CS.Enter;
CS.Free;
Nicht daß sie noch in Benutzung ist, beim Freigeben.
$2B or not $2B
  Mit Zitat antworten Zitat