AGB  ·  Datenschutz  ·  Impressum  







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

Multi Threaded Application

Ein Thema von Moony · begonnen am 8. Mär 2007 · letzter Beitrag vom 16. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Multi Threaded Application

  Alt 8. Mär 2007, 08:57
Hallo zusammen,

ich habe vor eine Multi Threaded Application bzw. DLL zu bauen und wollte fragen ob sich jemand damit auskennt & mir eventuell ein wenig Hilfestellung bezüglich Aufbau geben kann. Zumindest wäre es gut zu wissen wie solch ein Multithreading aufgebaut ist und funktioniert.

Danke schon mal im Vorraus.

Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#2

Re: Multi Threaded Application

  Alt 8. Mär 2007, 09:01
Hallo,

auf die Schnelle würd ich dir empfehlen einfach mal da rein zu schauen:
http://www.dsdt.info/tutorials/threads/
inc(i);
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#3

Re: Multi Threaded Application

  Alt 8. Mär 2007, 09:50
oder das Tutorial von Luckie
Jörg
have FUN
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Multi Threaded Application

  Alt 8. Mär 2007, 10:59
Hi!

wenn du das Multi-Threading mit einer Art Jobliste realisieren möchtest,
gibt es hier im Forum schon ein paar Themen.
Hier gibt es ganz unten ein kleines Beispiel. Das hatte mich auch weitergebracht.

Wenn du beliebige Aufträge in die Liste legen möchtest,
würde ich mich auch mit dem Thema Command-Pattern beschäftigen.
Jeden Befehl bettet man dann in eine TCommand-Klasse.

Wenn die Liste diesen Typ verarbeiten kann, kannst du ganz
auf die schnelle nahezu jeden beliebigen Befehl in diese
Liste tun.


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Multi Threaded Application

  Alt 8. Mär 2007, 17:09
Danke für die zahlreichen Tips.

Ich habe es soweit hinbekommen, dass beim Initialisieren die benötigte Anzahl an Threads gestartet wird. Mir bleiben dann nur noch 2 Fragen:

1. Wie kann ich während der Laufzeit auf einen bestimmten Thread zugreifen?
2. Wie kann das Multitasking einsetzen. D.h. ich greife auf einen Thread zu. Während dieser ausgeführt wird, möchte ich auf einen anderen Thread zugreifen. Ist das möglich? Wenn ja, wie?

Mit meinem jetzigen Code geht das wohl nicht. Der andere Thread startet erst, wenn der eine beendet ist.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Multi Threaded Application

  Alt 8. Mär 2007, 18:42
Zitat von Moony:
1. Wie kann ich während der Laufzeit auf einen bestimmten Thread zugreifen?
2. Wie kann das Multitasking einsetzen. D.h. ich greife auf einen Thread zu. Während dieser ausgeführt wird, möchte ich auf einen anderen Thread zugreifen. Ist das möglich? Wenn ja, wie?
zu 1: Indem du entweder die deklarierte Instanz holst und dann darauf zugreifen
kannst oder, falls die Instanzen der Threads in einer Liste von Pointern liegen, könntest du
über die Listen-Einträge daran kommen.

zu 2: Wenn du das Beispiel aus meinem obigen Link nimmst, wo die Threads einfach
eine Jobliste abarbeiten und dann warten, bis es wieder was zu tun gibt, musst du im Prinzip
gar nicht mehr speziell auf einen Thread gezielt zugreifen. Du schiebst einach einen neuen
Job in die Liste und Threads arbeiten wieder brav.

Wenn du dem User erlauben möchstest, eine bestimmte Methode z.B. das Hochladen einer Datei
in einem eigens dafür eingerichteten Thread auszuführen, kannst du natürlich einen zweiten
Thread starten usw. Wenn du hier jedoch dem User die Möglichkeit lässt, beliebig viele Threads
zu starten, könnte das Dein Programm irgendwann in die Knie zwingen.

Deswegen "stehe" ich halt so auf die Jobliste...

Gruß
Pfoto
Jürgen Höfs
Jürgen Höfs / picoly.de
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Multi Threaded Application

  Alt 9. Mär 2007, 08:55
Ja, aber mit der Jobliste wird das nacheinander ausgeführt. Das ist ja nicht Sinn und Zweck meiner Übung.
Ich will einen Thread starten. Während dieser Thread ausgeführt wird, will ich einen anderen Thread starten. das soll also parallel erfolgen können.

Ich glaube ich habe eine Lösung gefunden. Mit dem Demoprojekt von Borland selbst. Indem Unterklassen von der Hauptklasse gebildet werden.

Ich meld mich wenn das geklappt hat.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Multi Threaded Application

  Alt 9. Mär 2007, 09:04
Zitat von Moony:
Ja, aber mit der Jobliste wird das nacheinander ausgeführt.
Das sehe ich anders - es kommt natürlich darauf an, wie viele Threads du erstellst, die an der Jobliste arbeiten - und dies geschieht dann auch parallel. Oder meinen wir Beide was anderes?

Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Multi Threaded Application

  Alt 14. Mär 2007, 13:05
ich werde es bei Gelegenheit versuchen, wenn die Zeit dafür da ist.

Jetzt mache ich das in meiner Applikation so wie das Demoprojekt von Borland mit den verschiedenen Sortiersystemen. Ich habe nur ein Problem, beim Beenden der Applikation kommt eine deftige Exception mit Runtime Error. Wie kann ich bei der Finalisierung sicherstellen, dass alle Threads ordnungsgemäß beendet werden?
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#10

Re: Multi Threaded Application

  Alt 14. Mär 2007, 13:51
Zitat von Moony:
ich werde es bei Gelegenheit versuchen, wenn die Zeit dafür da ist.

Jetzt mache ich das in meiner Applikation so wie das Demoprojekt von Borland mit den verschiedenen Sortiersystemen. Ich habe nur ein Problem, beim Beenden der Applikation kommt eine deftige Exception mit Runtime Error. Wie kann ich bei der Finalisierung sicherstellen, dass alle Threads ordnungsgemäß beendet werden?
"MyThread.Free;" sollte reichen.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  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 00:02 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