initial commit
[rofl0r-KOL.git] / KOLIndy / myindy / IdThreadMgrDefault.pas
blobcab935f3b3aeff472bb55682499b90bf1658289f
1 // 25-nov-2002
2 unit IdThreadMgrDefault;
4 interface
6 uses KOL,
7 IdThread, IdThreadMgr;
9 type
10 TIdThreadMgrDefault = object(TIdThreadMgr)
11 public
12 function GetThread: PIdThread{TIdThread}; virtual;// abstract;// override;
13 procedure ReleaseThread(AThread: PIdThread{TIdThread});virtual;// override;
14 end;
15 PIdThreadMgrDefault=^TIdThreadMgrDefault;
17 function NewIdThreadMgrDefault(AOwner: PObj):PIdThreadMgrDefault;
19 implementation
21 uses
22 IdGlobal;
24 function NewIdThreadMgrDefault(AOwner: PObj):PIdThreadMgrDefault;
25 begin
26 New( Result, Create );
27 end;
29 function TIdThreadMgrDefault.GetThread: PIdThread{TIdThread};
30 begin
31 result := CreateNewThread;
32 Lock.Enter;
33 try
34 // ActiveThreads.Add(result);
35 finally Lock.Leave;
36 end;
37 end;
39 procedure TIdThreadMgrDefault.ReleaseThread(AThread: PIdThread{TIdThread});
40 begin
41 if not IsCurrentThread(AThread) then
42 begin
43 AThread.TerminateAndWaitFor;
44 AThread.Free;
45 end
46 else
47 begin
48 // AThread.FreeOnTerminate := True;
49 end;
50 Lock.Enter;
51 try
52 // ActiveThreads.Remove(AThread);
53 finally Lock.Leave;
54 end;
55 end;
57 end.