AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ThreadHelper - Prozeduren als Thread laufen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

ThreadHelper - Prozeduren als Thread laufen lassen

Ein Thema von himitsu · begonnen am 17. Jun 2010 · letzter Beitrag vom 18. Jun 2010
Antwort Antwort
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#1

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 06:40
durchaus auch einen Blick wert: OmniThreadLibrary

Aktuell arbeitet Primož an der OTL 2.0, ein paar Informationen dazu hat er in seinem Blog schon veröffentlicht: http://www.thedelphigeek.com/
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 07:13
Da find ich die Implementierung eines Futures von gabr besser (auch wenns nich 100%ig das gleiche ist). Außerdem ist es ein wenig unglücklich, dass die Procedure, die du ausführst schon so konstruiert sein muss, dass sie in nem ThreadHelper laufen kann.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 07:26
jpg's kenn ich, aber wer sagt denn, daß man nicht auch mal rumspielen darf?



Wobei jbg's Code ja auf "brutale" Weise den Threadkontext tauscht und die Codeausführung vom aktuellen Thread in einen anderen verschiebt.

Hier ist es einfach nur so, daß man einen TThread startet und seine Prozedur von da aus aufrufen läßt ... also ohne irgendwelche "Tricks" und somit wirt es auch keine Probleme geben, wenn sich mal irgendwo etwas ändert. (dir wird bestimmt nicht entfallen sein, daß jbg an seiner Lib schon eine ganze Weile arbeitet und es auch einige Problemchen gibt/gab.)

Also im Prinzip nehme ich hier den "offiziellen" Standardweg über TThread, nur daß man statt selber ein TThread-Objekt zu erstellen und selber seine Funktion aufzurufen, dieses über einen vordefinierten TThread-Nachkommen aufrufen lassen kann.

(Was aber nicht heißt, daß ich jbg's Code nicht cool finde )


OK, hab die Unit etwas abgespeckt und die Generics ausgebaut.
Es wird nun zwar erstmal nur maximal ein Parameter unterstützt, aber das liese sich erweitern (hab halt einfach nur alles entfernt/umgebaut, was Generics benötigt).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#4

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 07:43
Kennen wir uns? Ein Bekannter verneint auch immer alles doppelt:
Delphi-Quellcode:
(noWait: Boolean = False)
If not noWait Then


Aber wie du bereits sagtest, find ich es gut Alternativprodukte zu haben. (Auch wenns für D2k9++ ist )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 07:53
Gut, 'ne kleine Version ohne Generics gibt's ja nun.
Ich weiß grade nicht seit wann die TObjectList das OwnsObject kennt, aber ab da sollte der Code nun laufen.
Ansonsten müßte man noch was gegen das Speicherleck machen, welches ohne dieses entstehen würde.


Zitat:
// TAsyncCalls.Invoke<TObject>(DoSomething, nil); wegen internal compiler error nicht mehr funktionsfähig
Das kommt mir bekannt vor ... solche Compilerfehler bei Generics kommen immer wieder mal vor
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#6

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 08:09
Danke.
OwnsObjects gibt es anscheinend schon länger, nur 2007 kommt mit dem Class Destructor nicht klar und kennt folgendes nicht:
Code:
[DCC Fehler] ThreadHelperNonGen.pas(22): E1030 Ungültige Compileranweisung: 'POINTERMATH'
[DCC Fehler] ThreadHelperNonGen.pas(23): E1030 Ungültige Compileranweisung: 'STRINGCHECKS'
E: TThread.Start gibts auch noch nicht.
Wurde damit jetzt der Bug behoben? Ok, die OH sagt mittlerweie ich soll nicht mehr Suspend/Resum benutzen.

Geändert von mleyen (18. Jun 2010 um 08:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 09:20
OK, beim Class Destructor wußte ich nicht, seit wann es den gibt.
(hatte jetzt auch nicht dran gedacht diesen zu ersetzen ... war aber auch mein erstes Mal, wo ich diesen ausprobiert hatte)

STRINGCHECKS gibt es erst seit Delphi 2009 und der Rest wurde auch rausgenommen/geändert.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 09:54
aber wer sagt denn, daß man nicht auch mal rumspielen darf?
Darf man
Es ist einfach 'ne Spielerei um etwas die Grenzen und Möglichkeiten von Generics auszuloten.
Aber der praktische Nutzen ist im Prinzip nicht vorhanden.
Warum sollte man diese unglückliche Prozedure mit maximal einem Parameter aufrufen, wenn man doch lediglich die TThread-Klasse ableiten braucht?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: ThreadHelper - Prozeduren als Thread laufen lassen

  Alt 18. Jun 2010, 11:33
Mir ist noch nicht ganz klar, warum du, wenn du schon Delphi 2010 nutzt, keine anonymen Methoden benutzt. Das würde das ganze viel schlanker machen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:16 Uhr.
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-2025 by Thomas Breitkreuz