Thema: Delphi TThreadList.LockList

Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: TThreadList.LockList

  Alt 2. Okt 2003, 19:45
Hi Luckie,

es geht mir um folgenden Source :

Code:
procedure TUserList.Clear;
Var i : Longint;
      tmpUser : TUser;
      TmpList : TList;
begin
   TmpList := fTL.LockList;
   try
      for i:= 0 to TmpList.Count - 1 do begin
         if TmpList[i] <> Nil then begin
            tmpUser := TUser(TmpList[i]);
            tmpUser.Free;
            TmpList[i] := Nil;
         end;
      end;
      TmpList.Pack;
   finally
      fTL.UnlockList;
   end;
end;
Genauso wird aus einen anderen Thread :

Code:
procedure TUserList.Delete(user: TUser);
begin
   ftl.Remove(user);
   if user <> nil then
      user.free;
end;
Worum es mir bei Frage 1 ging ist :
was passiert wenn aus Thread 1 clear aufgerufen wird und Thread 2 delete aufruft, obwohl Thread 1 mit clear noch nicht fertig ist. Ist die Liste von Thread 1 noch gelockt, wie reagiert Thread 2 ?
Das Remove versucht ja auch die Liste zu sperren ! Wird der Eintrag dann entfernt ? Wartet der Zeit solange bis er die Liste sperren kann und macht dann weiter ?

Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat