Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Thread-Koordination ohne Messages (https://www.delphipraxis.net/183647-thread-koordination-ohne-messages.html)

p80286 25. Jan 2015 21:06

Thread-Koordination ohne Messages
 
Hallo zusammen,
ich habe z.Zt. eine Anwendung, die eine größere Menge Dateien/Verzeichnisse durchsuchen muß (findfirst/findnext). Da das etwas länger dauert, will ich das in mehrere Threads aufteilen. Allerdings soll das vollkommen unabhängig von der Oberfläche funktionieren.
Nur wie bekomme ich die verschedenen Treads dann ohne Messages koordiniert?

Gruß
K-H

Sir Rufo 25. Jan 2015 22:06

AW: Thread-Koordination ohne Messages
 
Ohne Messages heißt jetzt komplett ohne den Austausch von Nachrichten oder ohne die Windows Messages zu benutzen?

Dejan Vu 25. Jan 2015 22:20

AW: Thread-Koordination ohne Messages
 
Das schreit doch geradezu nach einem Workerthreadpool. Einfach per FindFirst/FindNext durch die Verzeichnisstruktur rennen und für jede Datei einen Job kreieren, der in die Jobliste des Pools gepackt wird.

Oder mit der TParallel-Library.

p80286 25. Jan 2015 23:04

AW: Thread-Koordination ohne Messages
 
@Dejan Vu
Da ich noch mit älteren Delphi-Versionen arbeite(n muß) entfällt das.

@Sir Rufo
Mir sind nur die Windowsmessages bekannt. Gibt's da noch was anderes?

Gruß
K-H

himitsu 25. Jan 2015 23:06

AW: Thread-Koordination ohne Messages
 
Zitat:

ich habe z.Zt. eine Anwendung, die eine größere Menge Dateien/Verzeichnisse durchsuchen muß (findfirst/findnext).
Nur Dateien suchen, oder wird damit auch was gemacht und wenn ja, was?

Ansonsten kann das in Threads maximal genauso schnell gehen (bei einer SSD) oder wenn das Dateisystem bereits zum Großteil im Cache geladen ist.
Bei normalen Festplatten wird das durch sowas sogar noch langsamer, da man durch paralelle Zugriffe sich gegenseitig die Festplatte ausbremst. :stupid: (je mehr Threads, um so schlimmer wird es ... abhängig von der Festplatte sogar ganz extrem)

Ausnahme bei mehreren Zugriffen auf je eine getrennte Festplatte ... abhängig vom Controller.

Sir Rufo 25. Jan 2015 23:45

AW: Thread-Koordination ohne Messages
 
Zitat:

Zitat von p80286 (Beitrag 1287723)
@Sir Rufo
Mir sind nur die Windowsmessages bekannt. Gibt's da noch was anderes?

Zum Stichwort Messages fällt mir der Austausch von Informationen ein, eventuell sogar durch eine Queue (nennt sich dann eine Message Queue), die dann periodisch abgearbeitet wird (per Polling). In dieser Art und Weise funktioniert auch das Windows Messaging. Das kann man aber auch selber bauen und zwar genau so oder auch in einer abgewandelten Form. Letztendlich werden irgendwann nur noch Methoden mit dem Nachrichteninhalt aufgerufen. Wieviele ist egal.

Luckie 26. Jan 2015 01:25

AW: Thread-Koordination ohne Messages
 
Events wäre noch eine Möglichkeit.

Dejan Vu 26. Jan 2015 08:09

AW: Thread-Koordination ohne Messages
 
Zitat:

Zitat von p80286 (Beitrag 1287723)
@Dejan Vu
Da ich noch mit älteren Delphi-Versionen arbeite(n muß) entfällt das.

Also dieser Workerthreadpool sollte mit allen Delphi-Versionen zurecht kommen. Da ist nichts besonderes drin.

p80286 26. Jan 2015 11:10

AW: Thread-Koordination ohne Messages
 
@Himitsu
Da es sich bei der "Festplatte" um einen Fileserver handelt, hoffe ich auf Besserung!
ach ja "zunächst nur Dateien suchen", dann die Sicherheitsattribute abfragen. Es gibt da ein paar Unterscheidungen und Niggelichkeiten, darum bin ich gezwungen, den vollständigen Bestand einzulesen. Beschränkung im Vorfeld ist leider nicht der Standardfall.

@Sir Rufo
Queue ist mir schon klar, nur wie organisiere ich so etwas? Eigentlich brauche ich einen unabhängiges Programm/Thread, das die queue organisiert?

@Luckie
Events? werden doch nur von der Hardware verschickt? und da bin ich doch auch auf Komponenten angewiesen?

@Dejan Vu
Wo find ich Infos über den (Delphi-)WorkerThreadpool? Ich hab das erst einmal als XEx-Erweiterung abgetan?

und vielen dank an Euch!
K-H

DeddyH 26. Jan 2015 11:15

AW: Thread-Koordination ohne Messages
 
http://www.delphipraxis.net/93835-wo...ntergrund.html

[edit] Nachtrag: http://delphi.about.com/od/kbthread/...asynccalls.htm [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Seite 1 von 2  1 2      

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