AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread-Koordination ohne Messages

Ein Thema von p80286 · begonnen am 25. Jan 2015 · letzter Beitrag vom 26. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Thread-Koordination ohne Messages

  Alt 25. Jan 2015, 21:06
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Thread-Koordination ohne Messages

  Alt 25. Jan 2015, 22:06
Ohne Messages heißt jetzt komplett ohne den Austausch von Nachrichten oder ohne die Windows Messages zu benutzen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Thread-Koordination ohne Messages

  Alt 25. Jan 2015, 22:20
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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Thread-Koordination ohne Messages

  Alt 25. Jan 2015, 23:04
@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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Thread-Koordination ohne Messages

  Alt 25. Jan 2015, 23:06
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. (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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (25. Jan 2015 um 23:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Thread-Koordination ohne Messages

  Alt 25. Jan 2015, 23:45
@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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Thread-Koordination ohne Messages

  Alt 26. Jan 2015, 01:25
Events wäre noch eine Möglichkeit.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: Thread-Koordination ohne Messages

  Alt 26. Jan 2015, 08:09
@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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Thread-Koordination ohne Messages

  Alt 26. Jan 2015, 11:10
@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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#10

AW: Thread-Koordination ohne Messages

  Alt 26. Jan 2015, 11:15
http://www.delphipraxis.net/93835-wo...ntergrund.html

[edit] Nachtrag: http://delphi.about.com/od/kbthread/...asynccalls.htm [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (26. Jan 2015 um 11:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 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