Ver Fonte

Added TThreadlist code. Shane

lazarus há 25 anos atrás
pai
commit
ff7424265d
2 ficheiros alterados com 47 adições e 11 exclusões
  1. 36 9
      fcl/inc/lists.inc
  2. 11 2
      fcl/linux/classes.pp

+ 36 - 9
fcl/inc/lists.inc

@@ -344,28 +344,48 @@ end;
 
 
 constructor TThreadList.Create;
-
 begin
+inherited Create;
+//InitializeCriticalSection(FLock);
+FList := TList.Create;
 end;
 
 
 
 destructor TThreadList.Destroy;
-
 begin
+  LockList;
+  try
+    FList.Free;
+    inherited Destroy;
+  finally
+    UnlockList;
+  end;
 end;
 
 
 
 procedure TThreadList.Add(Item: Pointer);
-
 begin
+  Locklist;
+  try
+    //make sure it's not already in the list
+    if FList.indexof(Item) = -1 then
+       FList.Add(Item);
+  finally
+  UnlockList;
+  end;
 end;
 
 
 procedure TThreadList.Clear;
-
 begin
+  Locklist;
+  try
+    FList.Clear;
+  finally
+    UnLockList;
+  end;
 end;
 
 
@@ -374,28 +394,35 @@ function TThreadList.LockList: TList;
 
 
 begin
-  LockList:=nil;
+  Result := FList;
 end;
 
 
 
 procedure TThreadList.Remove(Item: Pointer);
-
-
 begin
+  LockList;
+  try
+    FList.Remove(Item);
+  finally
+    UnlockList;
+  end;
 end;
 
 
 
 procedure TThreadList.UnlockList;
-
 begin
+
 end;
 
 
 {
   $Log$
-  Revision 1.11  2000-03-20 14:30:03  pierre
+  Revision 1.12  2000-06-27 15:55:19  lazarus
+  Added TThreadlist code.   Shane
+
+  Revision 1.11  2000/03/20 14:30:03  pierre
    * fix of 877
 
   Revision 1.10  2000/01/07 01:24:33  peter

+ 11 - 2
fcl/linux/classes.pp

@@ -34,20 +34,29 @@ implementation
 uses
   linux;
 
+var
+ClassList : TThreadlist;
+
 { OS - independent class implementations are in /inc directory. }
 {$i classes.inc}
 
 
 initialization
+ClassList := TThreadList.Create;
 
 finalization
-  if ThreadsInited then
+ClassList.Free;
+
+if ThreadsInited then
    DoneThreads;
 
 end.
 {
   $Log$
-  Revision 1.15  2000-01-07 01:24:34  peter
+  Revision 1.16  2000-06-27 15:55:19  lazarus
+  Added TThreadlist code.   Shane
+
+  Revision 1.15  2000/01/07 01:24:34  peter
     * updated copyright to 2000
 
   Revision 1.14  2000/01/07 00:01:33  peter