Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Threads... (https://www.delphipraxis.net/195153-threads.html)

calibra301 7. Feb 2018 06:58

Threads...
 
Hallo,

hab ein Problem mit Threads / Datenzugriff.

Ich hab im Mainform ein array of Objekt welches Daten beinhaltet.
Dann werden 4 Instanzen eines Ausgabethreads gestartet. Diese sollen sich Ihre Daten
aus dem Array of Object holen.
in jeder execute läuft eine 0..100 Schleife welche in den Array[x] guckt und ggf. dann was tut.

Geht das / darf man das überhaupt so machen ? Mir sind die Hintergründe nicht ganz klar.

Danke und Gruss
Calli

jaenicke 7. Feb 2018 08:07

AW: Threads...
 
Solange du auf alle Daten in dem Array ausschließlich lesend zugreifst (also auch keine Methoden auf den Objekten aufrufst, die Felder des Objekts modifizieren usw.) und das Array auch derweil nicht woanders schreibend angefasst wird, kannst du ohne Absicherung in den Threads darauf zugreifen.

Wenn irgendwo Schreibzugriffe parallel passieren, müsstest du das absichern, z.B. mit einem TMultiReadExclusiveWriteSynchronizer, TMonitor, kritischen Sektionen oder ähnlichen Mechanismen.

Luckie 7. Feb 2018 14:11

AW: Threads...
 
Ich würde aber auch lesende Zugriffe absichern. Denn sollte mal was an dem Programm geändert werden und doch schreibend zugegriffen werden, bist du jetzt schon auf der sichern Seite.

Mavarik 7. Feb 2018 16:34

AW: Threads...
 
Das ist sehr allgemein...

ggf. würde ich eher eine Queue nehmen, die Abgearbeitet wird... Aber das kommt darauf an, was Du machen willst...

ggf. ist es mit 4 Threads und einer Absicherung langsamer als mit einem Thread... Kann man nicht genau sagen..

Mavarik

Wosi 7. Feb 2018 16:39

AW: Threads...
 
Zitat:

Zitat von Luckie (Beitrag 1393285)
Ich würde aber auch lesende Zugriffe absichern. Denn sollte mal was an dem Programm geändert werden und doch schreibend zugegriffen werden, bist du jetzt schon auf der sichern Seite.

Was ist der Sinn von Multithreading wenn du zur Sicherheit alle bereits thread-sicheren Zugriffe nochmal absicherst? Damit bremst du das System doch bloß aus.

Mavarik 7. Feb 2018 16:44

AW: Threads...
 
Zitat:

Zitat von Wosi (Beitrag 1393296)
Was ist der Sinn von Multithreading wenn du zur Sicherheit alle bereits thread-sicheren Zugriffe nochmal absicherst?

Es geht Ihm ja gerade um die nicht thread-sicheren Zugriffe...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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