AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Frage zu XE7 Threadpool

Ein Thema von newbe · begonnen am 18. Mai 2015 · letzter Beitrag vom 19. Mai 2015
Antwort Antwort
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
322 Beiträge
 
Delphi 12 Athens
 
#1

AW: Frage zu XE7 Threadpool

  Alt 19. Mai 2015, 11:14
ich hätte mal einige Fragen bezüglich TThreadpool unter XE7.
Ich habe auch eine Frage: kann man diese auch unter Delphi 2010 nutzen oder gibt es dort analog etwas (von Drittanbietern)?
Grüße, Christoph
  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: Frage zu XE7 Threadpool

  Alt 19. Mai 2015, 11:16
ich hätte mal einige Fragen bezüglich TThreadpool unter XE7.
Ich habe auch eine Frage: kann man diese auch unter Delphi 2010 nutzen oder gibt es dort analog etwas (von Drittanbietern)?
Grüße, Christoph
OTL => OmniThreadLibrary
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
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
322 Beiträge
 
Delphi 12 Athens
 
#3

AW: Frage zu XE7 Threadpool

  Alt 19. Mai 2015, 11:38
OTL => OmniThreadLibrary
Danke!
  Mit Zitat antworten Zitat
newbe

Registriert seit: 14. Okt 2008
143 Beiträge
 
Delphi 7 Personal
 
#4

AW: Frage zu XE7 Threadpool

  Alt 19. Mai 2015, 20:56
@Sir Rufo

Ich halte ma fest, der Threadstealingbug ist also auch in Xe7 UPd1 drin, sehr toll. Mit XE8 will ich aber nicht arbeiten. Neues Design find ich kacke von den Bugs ma ganz ab.

Bzg. der TThreads/TTask bin ich etwas verwirrt, da du ja in dem vorherigen Post schriebst das ich keine mit meinem Code erzeuge.

Nochmal zum Verständnis, Ich möchte von Dir wissen wie ich dann halt diese Threadsichere locking Tasklist nutzen kann, und zwar nachdem die Tasks im Threadpool queued wurden. Alles was ich bisher an Task Beispielen gesehen habe sind nach dem schema: task.run mache was was endliche zeit dauert.
Ich habe hier aber Task die die ganze Zeit laufen und suche nach einer Methode diese von Außen zu suspenden bzw. abzubrechen und zwar ohne Stopvariablen und solche einen Quark. Werde mit rotzdem ma parallel die OTL anschauen.

mfg newbe
  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
 
#5

AW: Frage zu XE7 Threadpool

  Alt 19. Mai 2015, 21:20
Die TPL ist für begrenzt laufende Aufgaben gedacht und nicht für Dauerläufer. Denn wenn du Pech hast, dann laufen einige von deinen Dauertasks erst gar nicht an.

Der ThreadPool steuert wieviele Worker gleichzeitig Tasks abarbeiten anhand der Systemauslastung und CPU-Anzahl.

Somit ist das also der falsche Weg. Bau dir einen Thread und gut ist. Auch mit der OTL wirst du da nicht glücklich werden, denn auch da ist die Anzahl der Threads begrenzt, egal ob die nun die meiste Zeit schlafen oder nicht.

Mit einem Blick auf .Net wäre das was du als Wrapper suchst wohl eher der BackgroundWorker, den man auch in Delphi nachbauen kann. Da ist es dann egal, wieviele davon aktiv laufen (solange das System und der Speicher das mitmachen).
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
newbe

Registriert seit: 14. Okt 2008
143 Beiträge
 
Delphi 7 Personal
 
#6

AW: Frage zu XE7 Threadpool

  Alt 19. Mai 2015, 22:19
@Sir Rufo

Ich kenne den .Net Backgroundworker und denke er wäre in meinem Falle nicht angebracht. Auch finde ich die Threadlimetierung von TThreadpool praktisch.
Da es sich bei meinen Thread um Network IO Threads handelt und zu viele gleichzeitig laufende zu Problemen führen. In meinem konkreten Fall habe ich maximal 32 Threads gleichzeitig am laufen, meistens jedoch nur so ca. 8-10. Wenn ich auf 6 limitiere läuft alles gut. Klar könnte ich das alles auch mit if's und while schleifen lösen, aber eben genau das will ich nicht, weil ich solche konstruckte unschön finde. Die Threads oder auch Tasks im Threadpool zu queuen ist da schon die optimalste Lösung denk ich. Läuft ja auch schon alles so wie es soll. Ich suche nur nach ner Möglichkeit die laufenden Threads
zu suspenden und Threadpool zu sagen und unterbrich die Abarbeitung der Queue. Später möchte ich das ganze natürlich auch resumen können. darum gehts mir. Ich muss also von außen an die Thread/taskobjecte rann. Falls das mit Threadpool nich gehen sollte fänd ich das ganze Ding etwas sinnlos. Klar könnte ich threads erzeugen und mir die handles in ne liste ballern dann ginge das. ich habe aber im inet gelesen das das angeblich mit Threadpool so einfach gehn soll da dieses einen threadsafe locking Liste bieten soll.

mfg newbe
  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
 
#7

AW: Frage zu XE7 Threadpool

  Alt 19. Mai 2015, 22:54
Na wenn das irgendwo im INet so steht, dann geh dort hin und frag dort wie das geht. Von mir bekommst du nur ein "Vergiss das ganz schnell wieder, denn das ist Unfug!".

Man kann aus einem Kühlschrank eine Waschmaschine bauen (mit viel Geduld und Material) ... aber wozu? Nur weil der Kühlschrank neu ist und irgendwer gesagt hat das geht?

Aber wenn du unbedingt willst, dann schau doch in den Quelltext der TPL rein und such dir dort, das was du brauchst.
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
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:38 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