Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Threads: paralleler Lesezugriff auf unveränderliche Daten (https://www.delphipraxis.net/147798-threads-paralleler-lesezugriff-auf-unveraenderliche-daten.html)

changlee 16. Feb 2010 16:20


Threads: paralleler Lesezugriff auf unveränderliche Daten
 
Hallo,

ich bin mit Threads noch etwas unsicher, deshalb frage ich zu Sicherheit nochmal nach:

Ich habe ein Objekt, dass im HauptThread erstellt und verwaltet wird.
Ein Paar Eigenschaften, wie z.B. eine ID, werden nur einmal beim Create gesetzt und können nie wieder verändert werden.

1. Darf ich in einem weiteren Thread auf solche nur-Lesen-Eigenschaften lesend zugreifen? Dürfen also 2 Threads zur gleichen Zeit lesen, oder gibt es Probleme?

2. Das Objekt hat auch ein Feld fThreadWorkingVar, das nur im Thread verändert wird. Kann das Probleme geben?

3. Im Thread soll eine Methode des Objekts aufgerufen werden, die nie von einem anderen Thread genutzt wird. Ist das OK?

Also mein Verständnis ist momentan, dass man in Threads folgendes nicht machen darf:
- auf visuelle Objekte zugreifen
- schreibend auf eine Variable zugreifen, die möglicherweise woanders gerade gelesen oder beschrieben wird
- lesend auf eine Variable zugreifen, die möglicherweise woanders gerade beschrieben wird


Demnach müssten meine Punkte 1. bis 3. alle problemlos sein, oder?

sirius 16. Feb 2010 16:52

Re: Threads: paralleler Lesezugriff auf unveränderliche Date
 
Zitat:

Zitat von changlee
Also mein Verständnis ist momentan, dass man in Threads folgendes nicht machen darf:
- auf visuelle Objekte zugreifen
- schreibend auf eine Variable zugreifen, die möglicherweise woanders gerade gelesen oder beschrieben wird
- lesend auf eine Variable zugreifen, die möglicherweise woanders gerade beschrieben wird

Stimmt.

Zitat:

Demnach müssten meine Punkte 1. bis 3. alle problemlos sein, oder?
Die Punkte sind zu unklar, als dass man das jetzt sagen könnte, aber wenn du sie entsprechend der obigen Kriterien geprüft hast, sollte nix passieren.

Zitat:

1. Darf ich in einem weiteren Thread auf solche nur-Lesen-Eigenschaften lesend zugreifen? Dürfen also 2 Threads zur gleichen Zeit lesen, oder gibt es Probleme?

2. Das Objekt hat auch ein Feld fThreadWorkingVar, das nur im Thread verändert wird. Kann das Probleme geben?
keine Probleme, wenn nur ein Thread (oben sprachst du von zwei)

Zitat:

3. Im Thread soll eine Methode des Objekts aufgerufen werden, die nie von einem anderen Thread genutzt wird. Ist das OK?
Wenn diese Methode ihrerseits alle deine obigen Punkte einhält, ja.


Ich frage mich nur grad, was so ein "globales" Objekt dann bringt. Ordne doch die Methode sowie die Felder dem Thread zu.

changlee 16. Feb 2010 17:38

Re: Threads: paralleler Lesezugriff auf unveränderliche Date
 
Ok, dann kann ich das ja ohne Bedenken so benutzen. Danke.

Zitat:

Ich frage mich nur grad, was so ein "globales" Objekt dann bringt. Ordne doch die Methode sowie die Felder dem Thread zu.
Ich entwickle eine Komponente, die Aufgaben (Prozeduraufrufe) verwaltet. Der Thread wird nur bei Bedarf erstellt.
Das ganze fuktioniert wie ein TTimer, bloß auf Wunsch mit Threads und es kann ein beliebiges Objekt in der Komponente referenziert werden (z.B. für Status-Einträge). Ich habe schon länger drüber nachgedacht, aber ich denke, dass es so wie es momentan ist am besten ist.

Gruß
changlee

xZise 16. Feb 2010 18:21

Re: Threads: paralleler Lesezugriff auf unveränderliche Date
 
Moin,
also ich denke der Punkt 1 dürfte okay sein, aber Punkt 2 ist etwas problematisch. Weil es gibt kein Feld für ein Thread. Du hast ja ein Objekt und damit ist jedes Attribut nur einmal vorhanden.
Zu Punkt 3 kann ich dir leider nichts so genau sagen.

MfG
Fabian


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz