Das Erstellen von Threads geschieht im selben Thread, wie dein Löschen?
Wenn nicht, warum gibt es hier dann keine Syncronisierung/Threadabsicherung?
Was macht du in deinen Threads?
Wenn die Threads intern nichts machen (leeres Execute usw.), gehen die
Handle dann auch noch hoch?
Der ThreadTask wird ausserhalb erstellt
und der TaskListe im Threadpool hinzugefügt.
Der ThreadTask wird suspended erstellt.
Delphi-Quellcode:
function TThreadpool.addTask(task: TThreadTask): Boolean;
begin
fCriticalSection.Acquire;
result := false;
if fTaskList.Count < fMaxTaskList then
begin
fTaskList.Add(task);
result := true;
end;
fCriticalSection.Release;
end;
Im Threadpool wird der ThreadTask dann gestartet, wenn ein Platz in fRunningTasks frei ist.
Auch wenn der Threadtask nichts ausführt, erhöht sich die Anzahl der Handles wie vorher auch.
Grüße
Klaus