![]() |
Threads - Zugriff auf Listen und Variablen
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:
Zugriff innerhalb des Threads :
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;
Delphi-Quellcode:
Mir scheint das nicht alle neuen TClients hinzugefügt werden, daher mein Verdacht dass wenn die Liste gelockt wurde, kein Zugriff mehr gegeben wird.
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)); Kann das jemand ausschließen ? |
Re: Threads - Zugriff auf Listen und Variablen
Stelle die Fragen mal anders ;)
1.) Wartet ein anderer Thread beim Aufruf von isClientInList auf die Ausführung oder wird bei gelockter Liste diese Funktion übersprungen ? 2.) Gilt dies auch bei CriticalSections ? (Warten auf Ausführbarkeint) Danke für eure Antworten. Gruß BlueD |
Re: Threads - Zugriff auf Listen und Variablen
bei CriticalSections wird auf jeden Fall gewartet, bis der andere Thread den Abschnitt verlassen hat.
|
Re: Threads - Zugriff auf Listen und Variablen
... und locklist wartet auch ...
|
Re: Threads - Zugriff auf Listen und Variablen
Danke euch! Damit wäre das geklärt.
Dann ist jetzt Feierabend ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz