Hallo zusammen,
für die Verteilung von Thread-Jobs nutze ich Threadlisten und CriticalSections. Wird der Zugriff auf diese immer abgearbeitet wenn bereits ein anderer Thread zugreift? Hier ein Beispiel für eine Funktion :
Delphi-Quellcode:
function TJobList.isClientInList(aIP: TbCardinal): bool;
var
l: TList;
a: integer;
begin
Result := False;
l := fList.LockList;
try
for a := 0 to l.Count - 1 do
if TClient(l.Items[a]).IP.i = aIP.I then
begin
Result := True;
break;
end;
finally
fList.unlockList;
end;
end;
Zugriff innerhalb des Threads :
Delphi-Quellcode:
if not formMain.JobList[FListIndex].isClientInList(newCLientIP) then
if not formMain.DoneList[FListIndex].isClientInList(newCLientIP) then
formMain.JobList[FListIndex].AddClient(TClient.Create(newCLientIP, newClientPort.I));
Mir scheint das nicht alle neuen TClients hinzugefügt werden, daher mein Verdacht dass wenn die Liste gelockt wurde, kein Zugriff mehr gegeben wird.
Kann das jemand ausschließen ?