Einzelnen Beitrag anzeigen

mindtrap

Registriert seit: 7. Aug 2008
23 Beiträge
 
#8

Re: TList<T>, TQueue<T>, TDictionary<T> Th

  Alt 20. Jan 2010, 22:21
Zitat von igel457:
TList etc. verwalten intern ein Array. Beim (lesenden) Zugriff auf "Items" wird nur der Inhalt des Arrays zurückgegeben, sonst wird nichts gemacht. Lesender Zugriff auf TList und Verwandte davon ist Threadsicher.
Das ist eine gefährliche Aussage.
Wenn dein Thread die TList exklusiv verwendet ist das kein Problem.
Wird die TList allerdings von zwei Threads verwendet...
Ich habe die Implementierung momentan nicht vor mir liegen, aber TList wird nicht beim
Zugriff gesperrt.
Da die Liste vermutlich auch mit Elementen gefüllt wird (sonst ist sie sinnlos), muss also irgendetwas auch
schreibenden Zugriff haben. Und wenn dieses Etwas zufällig ein Element entfernt, während der Thread
liest, dann heißt es Daumen drücken.
Dafür gibt es extra eine Implementierung von TThreadList, welche intern eine TList verwendet und bei Zugriffen
sperrt.


Zitat von jbg:
Zitat von Win32.API:
Genau, da ich aber den Source fuer die Generics nicht besitze
Wie denn das? Alle Editionen kommen mit dem Quellcode der RTL und VCL.
Ich glaube die Personal Editions lieferten den Code nicht mit.
Aber das wird Win32.API sicherlich nicht in der Arbeit verwenden. :}
  Mit Zitat antworten Zitat