AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Thread-Status-Informationen auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Thread-Status-Informationen auslesen

Ein Thema von AJ_Oldendorf · begonnen am 7. Jun 2012 · letzter Beitrag vom 8. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2      
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#1

Thread-Status-Informationen auslesen

  Alt 7. Jun 2012, 23:11
Hallo zusammen,
angenommen ich habe in meiner Anwendung 47 Threads laufen.
Jeder Thread arbeitet eine Nachrichtenwarteschlange ab (PeekMessage...).
Die Nachrichten innerhalb eines Threads können auch unterschied lang sein.

Wie kann ich gewisse Informationen über diese 47 Threads auslesen wie zum Beispiel Nachrichtenanzahl in MessageQueue oder Speicherverbrauch des einzelnen Threads usw. (diese Dinge fallen mir grad ein).

Würde zum Beispiel gerne folgendes wissen:

Thread 1 hat 327 Nachrichten abzuarbeiten und dieser Thread belegt 300k im Speicher.
Thread 2 hat 4711 Nachrichten abzuarbeiten und dieser Thread belegt 800k im Speicher.
Thread 3 hat 12 Nachrichten abzuarbeiten und dieser Thread belegt 32k im Speicher.
usw.

Ich hoffe ihr könnt mir da weiter helfen.
Viele Grüße
Alex
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Thread-Status-Informationen auslesen

  Alt 7. Jun 2012, 23:26
Siehst du da links an der Seite eine hilfreiche Funktion oder bei einem der Funktionen einen passenden Link?

Nee, dann hast'e wohl Pech.



Und was den Speicher angeht.
Der meiste Speicher ist nicht an einen Thread gebunden, also wirst du so oder so selber mitzählen müssen.

Das Einzige, was wirklich mit einem Thread verbunden ist, wäre der Stack, wozu es bestimmt passene APIs gibt, um dessen Größe auslesen liese, aber beim Heap gehört alles zur "Anwendung", womit ausschließlich du weißt, bzw. wissen solltest, was zu einem Thread gehört.
$2B or not $2B
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#3

AW: Thread-Status-Informationen auslesen

  Alt 7. Jun 2012, 23:35
Zitat:
Siehst du da links an der Seite eine hilfreiche Funktion oder bei einem der Funktionen einen passenden Link?
Ich muss gestehen, dass habe ich nicht verstanden Vielleicht schon zu spät

Wenn jemand gewisse API Funktionen kennt, um die Stack Speichergröße auslesen zu kennen, wäre es hilfreich diese hier zu posten.

Danke schonmal und viele Grüße
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Thread-Status-Informationen auslesen

  Alt 7. Jun 2012, 23:43
Wenn jemand gewisse API Funktionen kennt, um die Stack Speichergröße auslesen zu kennen, wäre es hilfreich diese hier zu posten.
Im MSDN siehst du doch links eine Liste mit APIs zum selben Thema?

Tipp: Ich konnte da keine API finden, welche sowas ausließt.



OK, vielleicht gibt es noch irgendwo eine undokumentierte/geheime/interne API, aber da kommst du besser, wenn du dein Konzept nochmals überarbeitest.
Undokumentiertes kann sich auch schnell mal verändern oder gar verschwinden, so daß man sich nicht unbedingt drauf verlassen sollte.


[edit]
Ups, ich hatte vorhin den Link vergessen.
MSDN-Library durchsuchenPeekMessage > http://msdn.microsoft.com/en-us/libr.../ms644943.aspx

Und wenn man mehr wissen will, dann einfach weiter oben weitersuchen.
http://msdn.microsoft.com/en-us/libr.../ms632590.aspx
http://msdn.microsoft.com/en-us/libr.../ms632586.aspx
...
$2B or not $2B

Geändert von himitsu ( 7. Jun 2012 um 23:47 Uhr)
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#5

AW: Thread-Status-Informationen auslesen

  Alt 7. Jun 2012, 23:47
Ok, jetzt weiß ich was du meinst
Ich könnte ja rein theoretisch eine while Schleife mit PeekMessage machen aber als Parameter nicht Remove angeben, sondern nur so zum zählen der Nachrichten innerhalb der Queue. Das gefällt mir aber irgendwie nicht. Dachte es gibt vielleicht irgendeine Informationsquelle für einen Thread, die man auslesen kann. Sowas ähnliches wie "GetProcessMemoryInfo" für die Anwendung...

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Thread-Status-Informationen auslesen

  Alt 7. Jun 2012, 23:55
Nur daß PeekMessage dann immer wieder nur die oberste Message liefern wird.
Ich glaub deine Schleife wird dann zur Endlosschleife.

Hatte auch mal versucht zu zählen, aber ebenfalls nix gefunden.
Hat man wohl einfach nicht vorgesehn, daß jemand sowas auslesen wöllte.


Bei Google suchenwindows count of messages in message queue
count/counting/size/number/...

Ob sich so aber was finden läßt... wer weiß ...
$2B or not $2B

Geändert von himitsu ( 8. Jun 2012 um 00:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Thread-Status-Informationen auslesen

  Alt 8. Jun 2012, 00:05
Gegenfrage: Wozu benötigst du diese Informationen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#8

AW: Thread-Status-Informationen auslesen

  Alt 8. Jun 2012, 00:08
Gegenantwort Luckie: Wäre doch ganz schön zu sehen, bei einer großen Anzahl Threads, wer gerade wie viele Nachrichten abarbeiten muss und wie viel Speicher der jeweilige Thread gerade mit seinen ganzen Nachrichten einnimmt. Nur zur Statistik eben...

Gruß
Alex
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Thread-Status-Informationen auslesen

  Alt 8. Jun 2012, 00:16
OK, ist also für das Programmfunktion nicht zwingend nötig.

Wo kommen die Nachrichten denn her? Eventuell können die Absender mitzählen wie viele Nachrichten sie verschickt haben. Und ich nehme auch mal an, dass du so was wie einen Threadpool hast. Vielleicht könnte man da mitzählen, wie die ankommenden nachrichten auf die Threads verteilt werden. Und den Speicherverbrauch kannman dann durch eine einfache Multiplikation (Anzahl Nachrichten x Speicherverbrauch pro Nachricht) ermitteln.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Thread-Status-Informationen auslesen

  Alt 8. Jun 2012, 00:48
Aktuell passen so in etwa jeweils 10000 Messages rein und PostMessage teilt dir mit, wenn es voll ist.
$2B or not $2B

Geändert von himitsu ( 8. Jun 2012 um 00:51 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 09:59 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