Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#6

Re: Ist SetLength Thread-safe?

  Alt 25. Okt 2009, 10:46
Zitat von iphi:
daher ist die Übergabe des Arraypointers erforderlich.
am Besten wäre es, wenn du das Array in einer Klasse verwaltest und Zugriffe immer nur über Funktionen/Properties dieser Klasse (das kann auch der Hauptthread, bzw. das Formular sein) wird auf die Daten des Arrays zugegriffen.
Dann hast du auch die Synchronisierung (CriticalSection) zentral an einer Stelle.

Ansonsten mußt du ja die CriticalSection und einen Zeiger auf die Array-Variable übergeben und nicht auf das Array selber.
Dann kann sich jeder selber den Weg zum Array dereferenzieren und kann dieses auch bearbeiten.

Oder man könnte noch über Synchronize auf das Array im Haupthtread/Formular zugreifen.

[edit]
@wicht: TCricicalSection kommt natürlich auch dahin, wo das Array liegt
Stell dir mal vor man hat von den Klassen mehere, dann bremsen ihre Zugriffe sich gegenseitig aus.
Und wenn jemand TMyForm mehrfach erstellt, dann drehen die Sections durch, weil sie überschrieben und auch mal vorzeitig freigegeben werden (also die CS, welche als letztes in der Variable stand wird weg sein, wenn man ein solches Formular wieder freigibt ... das ist auch der Grund, warum globale Variablen meißtens böse sind ).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat